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


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

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

답변:


144

작은 따옴표는 표준 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가 아닙니다.


5
GString이 String이 아닌 것에 대한 좋은 점입니다. 동일한 문자가 포함되어 있어도 GString과 String간에 같음 비교가 실패하면 문제가됩니다. 이것은 특히지도에서 String / GString 키를 참조 할 때주의해야 할 사항입니다.
Steven

19

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.