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 で利用できます。