私は内部的に R2 ストア コンテキストを 2 つのテーブルとして読みました。1 つは単語用、もう 1 つは値用です。
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]
しかし、文書化されていないように見える3番目の「テーブル」(ブロック)があり、これは3番目の関数を使用してのみアクセスできます
>> third o
== [a: 1 b: 2]
>> pick o 3
** Script Error: Out of range or past end
** Near: pick o 3
この 3 番目のブロックは何ですか?
関数でも同様のことが発生しているように見えますが、今回はサードとピックの両方がうまく機能します。
>> 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]
最初のブロックは params、2 番目のブロックは body ですが、この 3 番目のブロックは関数で何を表していますか?