美元在Ruby中是什么意思?

美元在Ruby中是什么意思?,ruby,Ruby,我无意中发现了配额,看到这个代码被剪掉了。然而,我找不到太多关于它的信息 def Ke(x) "called Ke with param #{x}" end $ Ke 'sha' => "Called Ke with param sha" $ Ke$ha => "Called Ke with param " $ Ke$overwhaterver => "Called Ke with param " 为什么调用Ke$ha调用函数Ke(x),但它也会忽略x参数?使用$可

我无意中发现了配额,看到这个代码被剪掉了。然而,我找不到太多关于它的信息

def Ke(x)
  "called Ke with param #{x}"
end

$ Ke 'sha'
=> "Called Ke with param sha"

$ Ke$ha
=> "Called Ke with param "

$ Ke$overwhaterver
=> "Called Ke with param "

为什么调用
Ke$ha
调用函数
Ke(x)
,但它也会忽略
x
参数?

使用
$
可以访问全局变量。Ruby会自动添加括号。这与使用
Ke($ha)
Ke$ha
相同

全局变量总是可以被引用而没有错误;它们默认为
nil

$zxc # => nil
$zxc = 'asd'
$zxc # => "asd"

参数
$ha
没有被“忽略”,它是
nil
,而
nil.to_s
是一个空字符串。

很确定以前有人问过类似的问题,但堆栈溢出似乎使搜索
$
变得不可能_@是的,看起来是这样。也许这就是否决票的原因?为什么我们不需要在
Ke
$ha
之间留出空间呢?@Azuan Ruby的解析器非常灵活。由于
$
只能出现在全局变量的开头,因此它“知道”一个新的令牌开始。与未初始化的实例变量相同:
Ke@x#=>零