Подтвердить что ты не робот

Какая разница строк в одиночных или двойных кавычках в groovy?

def a = "a string"
def b = 'another'

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

4b9b3361

Ответ 1

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

Двойные кавычки - это шаблонная String, которая либо вернет 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 пути вниз.

Ответ 2

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

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