为什么Ruby让我在没有指定字符串的情况下调用String方法?

Bru*_*uce 7 ruby syntax

在阅读Programming Ruby时,我遇到了这段代码:

while gets
  num1, num2 = split /,/
end
Run Code Online (Sandbox Code Playgroud)

虽然我直观地理解它的作用,但我不理解语法.'split'是String类的一个方法 - 用Ruby的说法,哪个字符串是上面场景中'split'消息的接收者?

我可以在文档中看到"获取"将其结果分配给变量$ _,所以我的猜测是它隐含地使用$ _作为接收者 - 但是一大堆Google搜索未能确认猜测.如果是这种情况,我很想知道在没有显式接收器的情况下调用方法的一般规则.

我确实尝试了irb中的代码,并添加了一些诊断put调用,并且我验证了实际行为是您所期望的 - num1和num2获得由逗号分隔的输入的指定值.

Mic*_*ley 6

Ruby 1.8有一个Kernel#split([pattern [, limit]])与之相同的方法$_.split(pattern, limit),并gets设置它的值$_.