如何用方法调用链接make对象
How to chain make object with method call?
假设我有
WORLD: make object! [
people: make Object! []
cars: make Object! []
factories: make Object! []
create: func[][print "new world"]
]
如何使用create方法进行链接?这样的东西不起作用。
(make WORLD[])/create
这是我想模仿的JavaScript
(new WORLD()).create()
这种情况下的习惯用法是do get in
:
>> do get in make object! [a: does [42]] 'a
== 42
IN
返回对象上下文中的单词'a
。GET
检索绑定到'a
单词的值(在该上下文中)。最后,正如我们期望GET
返回的值是一个函数一样,我们只是使用DO
调用该函数。
对于您给出的示例,这将因此看起来如下:
do get in make WORLD [] 'create
根据Hostile Fork在评论中的建议,这里是最后一个表达式的全括号版本,以明确函数arity:
do (get (in (make WORLD []) 'create))
另一种方法是对REBOL的粒度进行更多的处理,这种类型的链接实际上并不适合REBOL:
WORLD: make object! [
people: make Object! []
cars: make Object! []
factories: make Object! []
create: does [print "new world"]
]
make WORLD [create]
或者,如果你正在寻找来自create的响应(在这种情况下,你不会得到'打印返回未设置!'):
result: do bind [create] make WORLD []
与链接相比,它可能有点笨拙,但链接是老派的语言。使用"绑定"就像可以使用黑魔法。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- 如何为json对象中的段发送array[]
- 如何用方法调用链接make对象