在Groovy中'vs'"vs'''.何时使用什么?

Til*_*ddy 12 groovy operators

我在Groovy中变得非常困惑.何时使用StringsGroovy中的内容?

1)单行情 - ' '
2)双行情 - " "
3)三行情 -'''

我的代码:

 println("Tilak Rox")
 println('Tilak Rox')
 println('''Tilak Rox''')
Run Code Online (Sandbox Code Playgroud)

所有都倾向于产生相同的结果. 什么时候用?

Sea*_*ull 12

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

那么,有什么区别:

  1. 单对双引号:最重要的区别.单引号是普通的类Java字符串.双引号是a GString,它允许字符串插值.即你可以在其中嵌入表达式:println("${40 + 5}")打印45,同时println('${ 40 + 5}')将产生${ 40 + 5}.这个表达式可能非常复杂,可以引用变量或调用方法.
  2. 三重引号和三重双引号是制作字符串多线的方法.您可以在代码中的一行打开它,在其中复制粘贴大块的xml,诗或sql表达式,而不要打扰字符串连接.
  3. Slashy /和Dollar-slashy $/字符串可用于帮助正则表达式.它们对'\'和'/'有特殊的转义规则.

正如@tim指出的那样,有一个很好的官方文档,解释了逃避规则和包含示例的细微差别.

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


tim*_*tes 6

单引号'用于基本字符串

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

def a = 'tim'
assert "Hi $a" == 'Hi tim'
Run Code Online (Sandbox Code Playgroud)

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

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

还有/hello $a/模板化的斜线字符串

$/hello $a/$以及多行和模板化的美元斜线字符串

它们都在文档中得到了很好的记录