回答:
groovyにはEOLマーカー(など;
)がないため、次の行に演算子を置くと混乱します
これは代わりに機能します:
def a = "test" +
"test" +
"test"
Groovyパーサーは次の行に何かを期待することを知っているので
Groovyは、オリジナルdef
を3つの別個のステートメントと見なします。最初の割り当てtest
にa
第二の二の試行は、作るために"test"
正(と、それが失敗した場所です)
new String
(ブレースがまだ閉じられていないとして)それは論理的に単一の文にまとめて3行に参加することができますので、コンストラクタメソッド、Groovyのパーサは、コンストラクタにまだあります
真の複数行文字列の場合、三重引用符を使用することもできます。
def a = """test
test
test"""
3行のテストで文字列を作成します
また、次の方法で見栄えをよくすることができます。
def a = """test
|test
|test""".stripMargin()
このstripMargin
メソッドは|
、各行から左(charまで)をトリミングします
stripMargin()
。
|
余分な行のchars を省略します
"""
文字列内では二重引用符を使用できます
stripIndent()
機能させる必要があることを示しました。
括弧のペアを追加することで、ステートメントが行末を超えて評価されることをGroovyに伝えることができます ( ... )
def a = ("test"
+ "test"
+ "test")
2番目のオプションは\
、各行の終わりにバックスラッシュを使用することです。
def a = "test" \
+ "test" \
+ "test"
FWIW、これはPythonの複数行ステートメントが機能する方法と同じです。
と同様にstripMargin()
、次のようにstripIndent()を使用することもできます
def a = """\
test
test
test""".stripIndent()
のため
先頭のスペースが最も少ない行によって、削除する数が決まります。
最初の「テスト」もインデントし、最初の「テスト」の直後に置かないようにする必要があります"""
(これ\
により、複数行の文字列が改行で始まらないようになります)。
def a = b + + "/" + c
。この場合、2つの+記号が明らかに問題です。