println("aaa\nbbb"); // \n は改行コード扱い
println("aaa\\nbbb"); // \ をエスケープしたので「\n」という文字列
println("""aaa\nbbb"""); // \ は特殊文字扱いされない。
aaa
bbb
aaa\nbbb
aaa\nbbb
タイプ数が少なくなるかどうかは微妙なところだけどわかりやすくなるのは確か。
「"」もエスケープ不要になる。
println("""abc"d"efg""");
abc"d"efg
主に正規表現の文字列表現でよく出てくる。
正規表現では「\」自体が意味を持つためエスケープだらけで分かりにくくなることが多いので、 確かにこの記法を使うのは有用だろう。
さらに、文字列中の改行も文字列の一部として扱われる。
println("""ABC
DEF
GHI""");
ABC
DEF
GHI
ソースコードの見た目に近い状態で出力されるので、整形済みテキストなどを出力する場合には重宝する。 Java 等では、
System.out.println( "ABC\n" + " DEF\n" + " GHI");
のようにしないといけないところ。
実際、Play framework で template を Scala コードに変換するとこの """ によって template 中のテキストが記載されている。
地味だが何気に便利な機能。
0 件のコメント:
コメントを投稿