2

在我认为变量范围是我得到提示的原因之后,该替换取决于变量的第一个字符是否是字母/下划线。但我不明白意图。让我们看这个例子:

$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 行都一样。它是一个错误吗?或者这种行为的意图是什么?

4

1 回答 1

3

这与范围无关。这里的问题是在插值中是否可以省略 after {}#如果你放{},那么上面的任何一个都可以工作。当您有一个以非字母字符(字母或下划线以外的字符,即$@)开头的变量时,您可以省略{}. 如果您在不能时省略{},则不会对其进行插值。

于 2014-05-09T22:19:50.853 回答