0

所以我有这个错误,我有一个方法:

def returnArr
  [2,3,4]
end

我这样做了:

returnArr = returnArr.first

返回一个错误,指出 nilClass 没有方法 'first'

此外,在完成那行代码之后,并跟进:

returnArr = returnArr().first

工作得很好,returnArr 现在与 returnArr() 不同。这里发生了什么?

4

1 回答 1

4

当你有这条线

 returnArr = returnArr.first

Ruby 看到(并执行)这个:

 returnArr = nil
 returnArr = returnArr.first

在给变量赋值之前,这个变量被初始化为nil。因此,在这种情况下,您的局部变量会影响您的方法。如果没有您的提示,ruby 无法确定您实际上想要调用该方法。当您提供括号时,ruby 知道局部变量不能有它们并调用该方法。

永远不要再这样做了。尤其是在真正的应用程序中。

于 2012-12-17T00:41:55.160 回答