Правильный способ использования интерполяции строк в 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.
Почему это работает? Что здесь делает интерпретатор?