[string] groovy에서 작은 따옴표 또는 큰 따옴표 내의 문자열의 차이점은 무엇입니까?

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

차이가 있습니까? 아니면 그냥 자바 스크립트처럼의 입력 수 있도록 '하고 "문자열에서 쉽게?



답변

작은 따옴표는 표준 Java 문자열입니다.

큰 따옴표는 템플릿 가능한 문자열로, 템플릿 화 된 경우 GString을 반환하거나 표준 자바 문자열을 반환합니다. 예를 들면 :

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 정도의 Strings가 아닙니다.


답변

내 이해는 큰 따옴표로 묶인 문자열에 변수 및 기타 표현식에 대한 참조가 포함될 수 있다는 것입니다. 예 : "Hello $name", "Hello ${some-expression-here}". 이 경우 a GString는 일반 대신 인스턴스화됩니다 String. 반면에 작은 따옴표로 묶인 문자열은이 구문을 지원하지 않으며 항상 일반 String. 여기에서 주제에 대해 자세히 알아보십시오.

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


답변