Rebol2 で、グローバル コンテキストが の場合system/words
、なぜこの結果が得られるのですか?
>> X: 0
== 0
>> same? system/words bound? 'X
== false
この場合の文脈は何ですか?same?
それとも、グローバル コンテキストでの使用に問題がありますか? (コンテキストが変更された場合に備えて、2番目のコマンドを繰り返してみました)
これは一種の通訳者の癖だと思います。Rebol 3 では発生しません。実際にはbound?
、Rebol 2 の結果 (結果) は、「通常のオブジェクト/コンテキスト」とは「タイプ ビット」によって異なります。この違いにより、 の予期しない結果が生じsame?
ます。たとえば、次のように期待される結果が得られます。
same? bound? 'X bound? 'system
ところで、これがまだ存在しない場合は、テスト スイートに追加するのに適したテストになる可能性があります。(Rebol3 にはグローバル コンテキストがないため、テストを Rebol2 と Rebol3 の両方に適用するには、オブジェクトを使用する必要がある場合があります)。テストは、たとえば次のようになります。
o: make object! [a: none]
same? o bound? in o 'a
上記のように、このテストは Rebol 2 では失敗しますが、Rebol 3 では成功します。
上記のテストとは対照的に、このテストは Rebol 2 と Rebol 3 の両方で成功します。
o: make object! [a: none]
same? bound? first bind [a] o bound? first bind [self] o