Answers:
由于groovy没有EOL标记(例如;
),因此如果您将运算符放在下一行会感到困惑
它将代替:
def a = "test" +
"test" +
"test"
因为Groovy解析器知道在下一行有期望
Groovy将原始文档def
视为三个单独的语句。第一个分配test
给a
,第二个分配给"test"
正号(这是失败的地方)
使用new String
构造函数方法,Groovy解析器仍在构造函数中(因为花括号尚未关闭),因此它可以将三行逻辑地合并为一个语句
对于真正的多行字符串,您还可以使用三引号:
def a = """test
test
test"""
将通过三行测试创建一个字符串
另外,您可以通过以下方法使其更加整洁:
def a = """test
|test
|test""".stripMargin()
该stripMargin
方法将修剪|
每行的左侧(直到并包括字符)
stripMargin()
。
|
多余的字符
"""
字符串中使用双引号
stripIndent()
正常工作。
您可以通过添加一对圆括号来告诉Groovy,该语句的求值应超过行尾 ( ... )
def a = ("test"
+ "test"
+ "test")
第二种选择是\
在每行的末尾使用反斜杠:
def a = "test" \
+ "test" \
+ "test"
FWIW,这与Python多行语句的工作方式相同。
类似stripMargin()
,你也可以使用stripIndent()一样
def a = """\
test
test
test""".stripIndent()
因为
前导空格最少的行确定要删除的号码。
您还需要缩进第一个“测试”,而不要直接将其放在缩写后面"""
(以\
确保多行字符串不以换行符开头)。
def a = b + + "/" + c
。在这种情况下,两个+符号显然是问题所在。