gpt4 book ai didi

REBOL 3 - 在哪里可以访问用户定义的命名空间词?

转载 作者:行者123 更新时间:2023-12-04 19:08:51 25 4
gpt4 key购买 nike

假设我定义了几个词:

Word1: 5
Word2: "blahdiddyblah"

系统的某些部分或 block 是否存储正在使用的单词?

尝试过这样的事情,但失败了:
S1: to-block copy system/contexts/user

D: 3

S2: to-block copy system/contexts/user

Difference s1 s2

根据@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]

这是什么意思? native 函数在使用后绑定(bind)到用户上下文中?有没有办法将这些与用户可能绑定(bind)的内容隔离开来?

最佳答案

当您在脚本中使用单词时 - 您以交互方式输入的每个命令行都是不同的脚本 - 这些单词被添加到 system/contexts/user ,用户上下文。只需将脚本中的单词添加到用户上下文中,这就是所有需要的“使用”。如果 lib 中已经存在这些新词中的任何一个,运行时库,然后用户上下文词从这些词当时在运行时库中的值中获得初始值。

在您的示例代码中,当您使用单词 form在您的脚本中,它被添加到用户上下文中。然后form被赋予 lib/form 的值是当时分配的。从此,form是用户词 - 系统词是 lib/form .

单词的值从 lib 传播的唯一一次到用户上下文是当这个词第一次被添加到用户上下文并被赋予它的初始值时。之后,如果您想对 lib 进行任何更改,要使其成为该单词的用户上下文版本,您必须自己分配它。如果它们具有相同的值,那只是因为您没有为用户词或系统词分配新值。

用户上下文中的所有单词都是用户创建的单词,即使是从 lib 初始化的单词也是如此。 .用户在将这些词放入用户脚本时会做出这些词。这就是用户上下文的重点。所以,如果你使用 print在您的脚本中,这是一个用户词,与任何其他用户词没有什么不同。

您可能想在这里查看更多详细信息:How are words bound within a Rebol module?
这里也是:What is the summary of the differences in binding behaviour between Rebol 2 and 3?

关于REBOL 3 - 在哪里可以访问用户定义的命名空间词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com