在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撰写的Ruby编程语言:



所以以下所有工作:

@var = "Hi"
puts "#@var there!"  #=> "Hi there!"

@@var = "Hi"
puts "#@@var there!" #=> "Hi there!"

$var = "Hi"
puts "#$var there!"  #=> "Hi there!"

关于ruby - 没有花括号时,为什么字符串插值在Ruby中起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10091156/

10-11 02:21