uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

トリプルクォート文字列中の改行の書き方

Groovy String Handling」を見てたまたま知ったことをメモ的に書いときます。

Groovyで、複数行のダブルクォート(トリプルダブルクォート)もしくは複数行のシングルクォート(トリプルシングルクォート)で改行を含む文字列定数を書くことができます。

def s1 = """ABC
DEF
"""
def s2 = '''ABC
DEF
'''

これはこれでいいのですが、ABCとDEFが別の桁にあるようでイヤーンな気もします。そういうときは

def s3 = """\
ABC
DEF
"""
def s4 = '''\
ABC
DEF
'''

こう書けます。行末のバックスラッシュで改行をエスケープできるということです。ちなみにこれはトリプルクォートに限らず普通のクォートでも同じです。

println "abc\
def"

この仕様はJavaとは違うので、思い込みでできないと思ってました。

別件ですが少し似た話として、

println
"abc"
+"def"

だと諸般の事情によりエラーになったり,期待する結果にならなかったりするかもしれませんが、

println\
"abc"\
+"def"

こんな書けます。


ほんのささやかな幸せ。