スタック上では、 数と同様に文字がセルを占めます。 メモリー内では文字は独自のサイズ(ほとんどのシステムでは 8 ビットのバイト値)であるため、 メモリー・アクセスには文字独自のワードが必要です:
create v4 104 c, 97 c, 108 c, 108 c, 111 c, v4 4 chars + c@ . v4 5 chars dump
スタック上の文字列の推奨される表現は addr u-count
です。ここで、addr
は文字列の最初の文字のアドレスで、
u-count
は文字列の文字数です。
v4 5 type
以下を使用すると文字列定数を取得できます
s" hello, world" .s type
s"
と文字列の間にスペースがあることを確かめてください。 s"
は通常の Forth ワードであり、 空白(white
space)で区切る必要があります(スペースを削除するとどうなるかを試してみましょう)。
ただし、 この s"
のインタープリターでの使用(interpretive use)は非常に制限されています。 文字列は、
s"
が次に呼び出されるまでの間だけ存在します(一部の Forth システムはこれらの文字列を複数保持しますが、
普通は未だ限られた寿命です)。
s" hello," s" world" .s type type
あなたは定義内で s"
を使用することもでき、 (定義が続く限り、)その結果の文字列は永久に存続します:
: foo s" hello," s" world" ; foo .s type type
研究課題(assignment):
Emit ( c -- )
はc
を(数値ではなく)文字として出力します。 これを使ってtype ( addr u -- )
を実装してみましょう。
こちらも参照ください: Memory Blocks