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!"