def a = "a string"
def b = 'another'
Есть ли разница? Или просто как javascript, чтобы вводить '
и "
проще в строках?
Ответы:
Одиночные кавычки - это стандартная строка 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 пути вниз.
Насколько я понимаю, строка в двойных кавычках может содержать встроенные ссылки на переменные и другие выражения. Например: "Hello $name"
, "Hello ${some-expression-here}"
. В этом случае GString
будет создан экземпляр вместо обычного String
. С другой стороны, строки в одинарных кавычках не поддерживают этот синтаксис и всегда дают простой результат String
. Подробнее по теме здесь:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings