Const-does>
¶create
...does>
は、 定義時から実行時に幾つかの値を転送(transfer)するためによく使用されます。
Gforth は、 このために以下を用意しています
const-does>
( run-time: w*uw r*ur uw ur "name" – ) gforth-obsolete “const-does”
定義時: name を定義して返ります。
name 実行時: w*uw r*ur をプッシュし、 const-does>
に続くコードを実行します。
このワードの一般的な使用例は以下のとおりです:
: curry+ ( n1 "name" -- ) 1 0 CONST-DOES> ( n2 -- n1+n2 ) + ; 3 curry+ 3+
ここで 1 0
は、 1 つのセルと 0 の浮動小数点が定義時から実行時に転送されることを意味します。
const-does>
を使用する利点は以下のとおりです:
does>
を使用する場合は、 最適化できない @
を導入する必要があります(なぜなら
>body
...!
を使用してデータを変更できるため)。 const-does>
はこの問題を回避します。
const-does>
の標準 Forth 実装は compat/const-does.fs で利用できます。