データとしての実行コード2
コンパイルモードで、ワードのXT値を取るには、[']を使います。
: .... ['] SomeWord ..... ;
ここで定義されているワードが実行されたとき、このポイントでSomeWordのXTがスタックにおかれます。言葉で言えば、[']は、次に置かれたワードのxtの値をスタック上に積むための
コードをコンパイルするワードです。
ワード定義の中で普通のティック ' を使うと、思わぬ動作をすることになるでしょう。(あえてコンパイルモードで普通のティックを使う意味はありますが、かなり高度な技巧となります。)(ティックについては
XTを参照)
XTの利用例を模式的に示しておきましょう。
' null VALUE MyXT
: MyWord MyXT EXECUTE ;
....
: MyWord1 .... ;
: MyWord2 .... ;
: SettoWord1 ['] MyWord1 -> MyXT ;
: SettoWord2 ['] MyWord2 -> MyXT ;
これらをコンパイルした後にMyWordを実行しても何もしません(何もしないワードnullが実行される。)。次に、SettoWord1を実行した後にMyWordを実行すると、MyWord1が実行されます。さらに、SettoWord2を実行した後にMyWordを実行すると、MyWord2が実行されます。
関連項目:
最終更新:2019年06月18日 17:16