Właściwy sposób używania interpolacji ciągów w Rubim jest następujący:
name = "Ned Stark"
puts "Hello there, #{name}" #=> "Hello there, Ned Stark"
To jest sposób, w jaki zamierzam go zawsze używać.
Jednak zauważyłem coś dziwnego w interpolacji ciągów Rubiego. Zauważyłem, że interpolacja ciągów działa w Rubim bez nawiasów klamrowych w odniesieniu do zmiennych instancji. Na przykład:
@name = "Ned Stark"
puts "Hello there, #@name" #=> "Hello there, Ned Stark"
I że próbowanie tego samego, co w przypadku zmiennej niebędącej instancją, nie działa.
name = "Ned Stark"
puts "Hello, there, #name" #=> "Hello there, #name"
Próbowałem tego z powodzeniem zarówno w wersji 1.9.2, jak i 1.8.7.
Dlaczego to działa? Co tu robi tłumacz?
źródło