在我认为变量范围是我得到提示的原因之后,该替换取决于变量的第一个字符是否是字母/下划线。但我不明白这个意图。让我们举个例子:
$var1 = "bar"
_var2 = "bar"
var3 = "bar"
Var4 = "bar"
@var5 = "bar"
puts "foo #$var1"
puts "foo #_var2"
puts "foo #var3"
puts "foo #Var4"
puts "foo #@var5"
结果如下:
foo bar
foo #_var2
foo #var3
foo #Var4
foo bar
我希望所有5条线都一样。这是一个错误吗?或者这种行为的意图是什么?
答案 0 :(得分:3)
不是关于范围。这里的问题是在插值中是否可以省略{}
之后的#
。如果您放置{}
,那么上面的任何一个都可以使用。当您有一个以非字母字符开头的变量(字母或下划线以外的字符,即$
或@
)时,您可以省略{}
。如果在不能的情况下省略{}
,则不会进行插值。