让我说我有:
foo: object [bar: 10]
print foo/bar ;-- output 10
是否有 xxx 表示:
foo: object [bar: 10]
xxx foo [
print bar ;-- output 10
]
绑定会起作用,但很难看(在块之后放置对象引用),你必须调用DO:
foo: object [bar: 10]
do bind [
print bar ;-- output 10
] foo
(默认情况下它也会改变块参数......对于受欢迎的xxx来说,这可能不是一个很好的通用属性。)
对于xxx来说,USE似乎是一个好词,但它已经被用于其他东西:它允许你在本地上下文中声明单词,同时保留该单词的先前定义:
foo: object [bar: 10]
use [foo] [
foo: object [bar: 20]
print foo/bar ;-- prints 20
]
print foo/bar ;-- prints 10
某些东西已经在盒子里做了我想要的东西,还是必须要写它? WITH可能是一个好名字,来自具有并行功能的其他语言。
一种选择是将其作为使用的延伸......或许如果你给它一个GET-WORD它会做什么!在列表中。
答案 0 :(得分:2)
这是in
的主要用例之一,"倒置" bind
的表弟:
>> foo: object [bar: 10]
== make object! [
bar: 10
]
>> do in foo [print bar]
10
如果您不希望代码块发生变异,请在混合中添加copy
:do in foo copy [print bar]
。
请务必同时查看(再次)" How to use IN with a block instead of an object?"的答案。