В чем разница строк в одинарных или двойных кавычках в groovy? - PullRequest
76 голосов
/ 20 июля 2011
def a = "a string"
def b = 'another'

Есть ли разница?Или просто как javascript для облегчения ввода ' и " в строках?

Ответы [ 2 ]

121 голосов
/ 20 июля 2011

Одиночные кавычки - это стандартная строка Java

Двойные кавычки - это изменяемая строка, которая будет возвращать строку GString, если она задана как шаблон, или стандартную строку Java.Например:

println 'hi'.class.name    // prints java.lang.String
println "hi".class.name    // prints java.lang.String

def a = 'Freewind'
println "hi $a"            // prints "hi Freewind"
println "hi $a".class.name // prints org.codehaus.groovy.runtime.GStringImpl

Если вы попытаетесь создать шаблон с одинарными строками в кавычках, он ничего не сделает, поэтому:

println 'hi $a'            // prints "hi $a"

Кроме того, ссылка , предоставленная julkiewicz вИх ответ стоит прочитать (особенно часть о том, что GStrings не являются строками примерно на 2/3 пути вниз.

15 голосов
/ 20 июля 2011

Насколько я понимаю, строка в двойных кавычках может содержать встроенные ссылки на переменные и другие выражения.Например: "Hello $name", "Hello ${some-expression-here}".В этом случае будет создан экземпляр GString вместо обычного String.С другой стороны, строки в одинарных кавычках не поддерживают этот синтаксис и всегда приводят к простой String.Больше по теме здесь:

http://docs.groovy -lang.org / latest / html / documents / index.html # all-strings

...