使用以下代码创建上下文:
c: context [a: 2]
您可以看到它创建了一个上下文c
,a
未绑定在全局上下文中:
>> ?? c
c: make object! [
a: 2
]
>> a
** Script Error: a has no value
** Near: a
现在,如果你使用bind 'a c
,它会在绑定的上下文中返回单词的值:
>> get bind 'a c
== 2
这也与in c 'a
相同:
>> (get bind 'a c) = (get in c 'a)
== true
看起来in
是带有翻转参数的bind
版本
in
如何与众不同? 在bind
中添加了一些明显的功能,例如对效率进行了细化/copy
,并为其block!
参数接受了words
而不是单个词
在这种情况下,问题变成了,为什么in
?
答案 0 :(得分:1)
最大的区别在于BIND可以传播单词的上下文:
>> q: func [/local a b][a: 1 b: 2 return 'a]
>> get bind 'b q
== 2
>> get in q 'b
** Script Error: in expected object argument of type: object port
** Near: get in q 'b
当然只有Rebol 2。