type
や emit
の出力と、
それらを使用するすべてのワード(明示的なターゲット・ファイルを持たないすべての出力用ワード)を、 outfile-execute
を使用して任意のファイルにリダイレクトできます。 以下のように使用します:
: some-warning ( n -- ) cr ." warning# " . ; : print-some-warning ( n -- ) ['] some-warning stderr outfile-execute ;
これは、 some-warning
を execute した後、 元の出力先を復元します。 この構造は例外に対して安全です。 同様に、
key
からの入力と、 それを利用した入力(明示的にファイルを指定しない入力用ワード)をリダイレクトするための
infile-execute
があります。
outfile-execute
( ... xt file-id – ... ) gforth-0.7 “outfile-execute”
type
などの出力を file-id にリダイレクトして xt を execute します。
outfile-id
( – file-id ) gforth-0.2 “outfile-id”
File-id は、 emit
や、 type
や、 入力として file-id
を受け取らない出力用ワードによって使用されます。 outfile-execute
で変更しない限り、 デフォルトでは
outfile-id
は実行中のプロセスの stdout
を生成します。
infile-execute
( ... xt file-id – ... ) gforth-0.7 “infile-execute”
key
などの入力を file-id にリダイレクトして xt を実行します。
infile-id
( – file-id ) gforth-0.4 “infile-id”
File-id は、 key
や、 ?key
や、 「ユーザー入力デバイス」(user input
device)を参照するものすべてによって使用されます。 デフォルトでは、 infile-execute
で変更しない限り、infile-id
は実行中のプロセスの stdin
を生成します。
あなたが、 入力または出力をファイルにリダイレクトしたくない場合は、 key
や emit
や type
が
defer されたワードであるという事実を利用することもできます(see Deferred Words)。 ただし、 その場合は、 復元と、
例外からの保護について、 自分で心配する必要があります。 また、 この方法で出力をリダイレクトするには、 emit
と
type
の両方をリダイレクトする必要があることに注意してください。