function - 您从 Rebol2 中的对象/函数上的 THIRD 获得的未记录 block 是什么?

标签 function object rebol rebol2

我在内部读过 R2 将上下文存储为两个表,一个用于单词,另一个用于值,因此您可以询问它们:

o: context [a: 1 b: 2]
>> first o
== [self a b]
>> second o
== [make object! [
        a: 1
        b: 2
    ] 1 2]

无论如何......

>> pick o 1
== [self a b]
>> pick o 2
== [make object! [
        a: 1
        b: 2
    ] 1 2]

但是还有第三个“表”(一个 block )似乎没有记录,并且只能使用第三个函数访问该表

>> third o
== [a: 1 b: 2]

>> pick o 3
** Script Error: Out of range or past end
** Near: pick o 3

第三个 block 应该是什么?

类似的事情似乎发生在函数中,但这次 Third 和 pick 都表现良好:

>> f: func [a] [print a]
>> first :f
== [a]
>> second :f
== [print a]
>> third :f
== [a]
>> pick :f 1
== [a]
>> pick :f 2
== [print a]
>> pick :f 3
== [a]

第一个 block 是参数,第二个 block 是主体,但是第三个 block 在函数中代表什么?

最佳答案

Third 返回对象定义。

>> body: [a: 1 b: 2]
== [a: 1 b: 2]
>> obj: context body
>> equal? body third obj
== true
>> strict-equal? body third obj
== true

与 Rebol 2.7.7 及更高版本以及 Rebol 3 中的 body-of 相同。

关于function - 您从 Rebol2 中的对象/函数上的 THIRD 获得的未记录 block 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053821/

相关文章:

模块中的javascript私有(private)内部函数可以访问 "this"范围

java - 尝试制作棋盘格

Windows 7 不提供 rebol View 作为文件打开器

javascript - 在 Javascript 中操作对象数组

dll - 如何使用 LibFFI 支持构建 Rebol 的 "Ren-C"分支?

date - red/rebol : Subtracting dates returns days, 我该如何改变它?

python - 函数循环 True 或 False

javascript - 函数设置为运行一次不运行

Swift - 使函数类型显式(在协议(protocol)中)

c++ - 封装:我应该将一个对象的数据传递给另一个修改它的类吗?