可以说我定义了几个词:
Word1: 5
Word2: "blahdiddyblah"
Run Code Online (Sandbox Code Playgroud)
是否有系统的某个部分或块存储正在使用的单词?
尝试过这样的事情,但失败了:
S1: to-block copy system/contexts/user
D: 3
S2: to-block copy system/contexts/user
Difference s1 s2
Run Code Online (Sandbox Code Playgroud)
根据@johnk的建议,我试过:
>> snapshot-of-words: words-of system/contexts/user
== [system snapshot-of-words words-of contexts user]
>> x: 1
== 1
>> difference snapshot-of-words words-of system/contexts/user
== [x difference]
>> difference snapshot-of-words words-of system/contexts/user
== [x difference]
>> 5 + 9
== 14
>> form ["hellow" "there" ]
== "hellow there"
>> difference snapshot-of-words words-of system/contexts/user
== [x difference + form]
Run Code Online (Sandbox Code Playgroud)
这是什么意思?本机函数在使用后被绑定到用户上下文中?有没有办法将这些与用户可能绑定的方法隔离开来?
在脚本中使用单词时 - 交互式输入的每个命令行都是不同的脚本 - 这些单词将添加到system/contexts/user用户上下文中.只需在脚本中添加单词就可以将它们添加到用户上下文中,这就是所需的全部"用途".如果lib运行时库中已存在这些新单词中的任何一个,那么用户上下文单词将获得这些单词在该时刻在运行时库中具有的值所分配的初始值.
在您的示例代码中,当您form在脚本中使用该单词时,它将添加到用户上下文中.然后form分配当时分配的值lib/form.从那时起,form是一个用户词 - 系统词是lib/form.
单词的值传播lib到用户上下文的唯一时间是该单词首次添加到用户上下文并给出其初始值.之后,如果您希望lib对该单词的版本进行任何更改以使其成为该单词的用户上下文版本,则必须自行分配.如果它们具有相同的值,那么这只是因为您没有为用户或系统字词分配新值.
用户上下文中的所有单词都是用户创建的单词,甚至是初始化的单词lib.用户在将这些单词放入用户脚本时会生成这些单词.这是用户上下文的重点.因此,如果您print在脚本中使用,那是一个用户词,与任何其他用户词没有区别.
您可能希望在此处查看更多详细信息:如何在Rebol模块中绑定单词? 在这里:Rebol 2和3之间绑定行为的差异总结是什么?
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |