文字列リテラル '...'
は改行を含むことができません。,
と LF
を使って繋げる方法はありますが、何行にもわたる文字列を書くには不便です。
explicit definition の一種を使うことで、複数行の文字列リテラルを書くことができます。
noun define
noun define
は、終端の )
の手前までを文字列として返します。ヒアドキュメントやヒア文字列のような機能です。
noun define
の直後の改行は文字列に含まれませんが、)
の前の改行は文字列に含まれます。改行は全て LF です。
text=: noun define
abcde
あいうえお 漢字 😀
) ...
)
text
abcde
あいうえお 漢字 😀
) ...
text -: 'abcde' , LF , 'あいうえお 漢字 😀' , LF , ') ...' , LF
1
他の explicit definition とは異なり、どんな文字を含んでいても構いません。ただし、終端の )
の行は explicit definition の構文通り他の文字を含んではいけません。逆に、)
と空白のみからなる行は必ず終端と見なされるので、注意しましょう。
複数行コメント
noun define
は )
までの文字列を返しますが、その値を単に無視すれば複数行コメントとして使うことができます。それをするための verb が標準ライブラリに定義されています 1。
Note
(monad) は複数行コメントとして機能します。引数には何を渡しても構いません。
Note''
ここがコメント。
改行も含んでよい。
)
explicit definition を丸ごとコメントアウトするのにも使えます。
Note''
box=: monad define
<y
)
Note
(dyad) は単一行バージョンですが、実体は [
と同じです。
1 % 0 Note 'エラーは発生しない'
_
[ 前 : explicit definition ] [ 目次 ] [ 次 : define の実体 ]
-
標準ライブラリはデフォルトで使えるので、インポートなどは必要ありません。 ↩