在 Rebol 3 中,控制台和脚本的某些行为对于理解很重要:
您键入的任何内容load
都由 Rebol 编辑。当它被load
编辑时,它被放在一个上下文中。
如果我输入:
b: 4
set 'b 5
有一个现有的单词b
或'b
没有任何正在评估的代码/数据,它被放在system/contexts/user
上下文中,因此它具有与该上下文的绑定。
>> bound? 'b
== make object! [
system: make object! [
version: 2.101.0.3.1
build: 31-May-2013/18:34:38
platform: [
Windows win32-x86
]
product: 'saphir-view
license: {Copyright 2012 REBOL Technologies
REBOL is a trademark of REBOL Technologies
Licensed under the Apache License, Version 2.0.
See: http://www.apache.org/licenses/LICENSE-2.0
}
catalog: make object! [
datatypes: [end! unset! none! logic! integer! decimal! percent! mo...
为了表明这是相同的上下文:
>> same? (bound? 'b) system/contexts/user
== true
但是,当您键入 时to-word "b"
,所load
看到的只是一个单词to-word
和一个字符串。因此,在这种情况下,load
添加to-word
单词 tosystem/contexts/user
但绑定没有任何反应,b
因为它尚未加载。
>> bound? to word! "b"
== none
此外,to word!
(或to lit-word!
等)在评估时不会绑定任何东西。该绑定必须手动完成。
请参阅Rebol 模块中的单词是如何绑定的?了解更多信息