Cách thích hợp để sử dụng nội suy chuỗi trong Ruby như sau:
name = "Ned Stark"
puts "Hello there, #{name}" #=> "Hello there, Ned Stark"
Đó là cách tôi dự định sẽ luôn sử dụng nó.
Tuy nhiên, tôi đã nhận thấy điều gì đó kỳ lạ trong nội suy chuỗi của Ruby. Tôi nhận thấy rằng nội suy chuỗi hoạt động trong Ruby mà không có dấu ngoặc nhọn liên quan đến các biến cá thể. Ví dụ:
@name = "Ned Stark"
puts "Hello there, #@name" #=> "Hello there, Ned Stark"
Và việc thử tương tự như một biến không phải là phiên bản sẽ không hoạt động.
name = "Ned Stark"
puts "Hello, there, #name" #=> "Hello there, #name"
Tôi đã thử điều này thành công trong cả 1.9.2 và 1.8.7.
Tại sao điều này hoạt động? Thông dịch viên đang làm gì ở đây?