development

중괄호가 없을 때 Ruby에서 문자열 보간이 작동하는 이유는 무엇입니까?

big-blog 2020. 9. 19. 11:45
반응형

중괄호가 없을 때 Ruby에서 문자열 보간이 작동하는 이유는 무엇입니까?


Ruby에서 문자열 보간을 사용하는 올바른 방법은 다음과 같습니다.

name = "Ned Stark"
puts "Hello there, #{name}" #=> "Hello there, Ned Stark"

이것이 제가 항상 사용하고자하는 방식입니다.

그러나 Ruby의 문자열 보간에서 이상한 점발견했습니다 . 문자열 보간은 인스턴스 변수와 관련하여 중괄호없이 Ruby에서 작동합니다. 예를 들면 :

@name = "Ned Stark"
puts "Hello there, #@name" #=> "Hello there, Ned Stark"

그리고 비 인스턴스 변수와 동일한 것을 시도하는 것은 작동하지 않습니다.

name = "Ned Stark"
puts "Hello, there, #name" #=> "Hello there, #name"

1.9.2와 1.8.7 모두에서 성공을 거두었습니다.

왜 이것이 작동합니까? 여기서 통역사는 무엇을하고 있습니까?


Flanagan과 Matsumoto의 The Ruby Programming Language따르면 :

문자열 리터럴로 보간 할 표현식이 단순히 전역, 인스턴스 또는 클래스 변수에 대한 참조 인 경우 중괄호를 생략 할 수 있습니다.

따라서 다음은 모두 작동합니다.

@var = "Hi"
puts "#@var there!"  #=> "Hi there!"

@@var = "Hi"
puts "#@@var there!" #=> "Hi there!"

$var = "Hi"
puts "#$var there!"  #=> "Hi there!"

참고 URL : https://stackoverflow.com/questions/10091156/why-does-string-interpolation-work-in-ruby-when-there-are-no-curly-braces

반응형