在Groovy中'vs'“vs'''。何时使用什么?

时间:2016-05-26 15:16:34

标签: groovy operators

我在Groovy中感到非常困惑。何时在Groovy中使用Strings的内容?

1)单引号 - ' '
  2)双引号 - " "
  3)三重引号 - '''

我的代码:

 println("Tilak Rox")
 println('Tilak Rox')
 println('''Tilak Rox''')

所有人都倾向于产生相同的结果。 何时使用什么?

2 个答案:

答案 0 :(得分:11)

我会更加困惑你,说,你也可以使用斜杠/,dolar-slash $/和三重双引号"""同样的结果。 =)

那么,有什么区别:

  1. 单对双引号:最重要的区别。单引号是普通的类Java字符串。双引号是GString,它允许字符串插值。即您可以在其中嵌入表达式:println("${40 + 5}")打印45,而println('${ 40 + 5}')将生成${ 40 + 5}。这个表达式可能非常复杂,可以引用变量或调用方法。
  2. 三重报价三重双重报价是制作字符串多行的方法。您可以在代码中的一行打开它,在其中复制粘贴大块的xml,诗或sql表达式,不要打扰字符串连接。
  3. Slashy / $ slashy $/字符串可用于帮助使用正则表达式。他们对'\'和'/'有特殊的逃避规则。
  4. 正如@tim指出的那样,有一个很好的official documentation,解释了逃避规则和包含例子的细微差别。

    很可能您不需要经常使用多行/斜杠字符串,因为您在非常特殊的情况下使用它们。但是当你这样做时,它们会对你的代码的可读性产生巨大的影响!

答案 1 :(得分:3)

单引号'适用于基本字符串

双引号"适用于模板化字符串,即:

def a = 'tim'
assert "Hi $a" == 'Hi tim'

三重单引号'''适用于多行基本字符串

三重双"""引号用于多行模板化字符串

还有模糊的字符串/hello $a/

美元贬值的字符串$/hello $a/$是多行和模板化的

They're all documented quite well in the documentation