5

私は内部的に 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 番目のブロックは関数で何を表していますか?

4

2 に答える 2