3

Rebol 3 で単語を試しているときに、次のエラーに遭遇しました。

>> set to lit-word! "g" 4
** Script error: 'g word is not bound to a context
** Where: set
** Near: set to lit-word! "g" 4

次の結果から、これはかなりトリッキーに思えます。

>> to lit-word! "g"
== 'g
>> set 'g 4
== 4

上記と同じように見える単語をコンテキストにバインドできないのはどうしてだろうと思っていました...

4

1 に答える 1

4

Rebol 3 では、理解することが重要なコンソールとスクリプトの特定の動作があります。

入力したものはloadすべて Rebol によって編集されます。loaded の場合は、コンテキストに入れられます。

私が入力した場合:

b: 4
set 'b 5

既存の単語があるb'b、コード/データが評価されていないため、system/contexts/userコンテキストに配置されるため、そのコンテキストにバインドされます。

>> bound? 'b
== make object! [
    system: make object! [
        version: 2.101.0.3.1
        build: 31-May-2013/18:34:38
        platform: [
            Windows win32-x86
        ]
        product: 'saphir-view
        license: {Copyright 2012 REBOL Technologies
            REBOL is a trademark of REBOL Technologies
            Licensed under the Apache License, Version 2.0.
            See: http://www.apache.org/licenses/LICENSE-2.0
        }
        catalog: make object! [
            datatypes: [end! unset! none! logic! integer! decimal! percent! mo...

そして、これが同じコンテキストであることを示すために:

>> same? (bound? 'b) system/contexts/user
== true

ただし、 と入力するto-word "b"と、表示されるloadのは単語to-wordと文字列だけです。したがって、この場合、 to という単語がload追加されますが、バインディングはロードされていないため何も起こりません。to-wordsystem/contexts/userb

>> bound? to word! "b"
== none

また、to word!(またはto lit-word!など) が評価されると、何もバインドされません。そのバインドは手動で行う必要があります。

Rebol モジュール内で単語はどのようにバインドされているかを参照してください。詳細については

于 2013-08-24T14:59:13.397 に答える