def a = "a string"
def b = 'another'
Чи є якась різниця? Або просто як javascript для введення '
та "
простішого введення в рядки?
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}"
. У цьому випадку a GString
буде інстанційовано замість регулярного String
. З іншого боку, рядки з одинарними лапками не підтримують цей синтаксис і завжди призводять до простогоString
. Більше про тему тут:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings