0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

複数行のリテラル ― J 言語入門

Last updated at Posted at 2021-06-30

文字列リテラル '...' は改行を含むことができません。,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 の実体 ]

  1. 標準ライブラリはデフォルトで使えるので、インポートなどは必要ありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?