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