为什么在没有大括号的情况下,字符串插值可以在Ruby中工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (18)

在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 Programming Language

当要插入到字符串文字中的表达式只是对全局,实例或类变量的引用时,可以省略花括号。

所以以下都应该工作:

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

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

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

扫码关注云+社区