当我将方法设置为自己的返回值时,究竟发生了什么?

时间:2012-12-17 00:39:13

标签: ruby

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

def returnArr
  [2,3,4]
end

我这样做了:

returnArr = returnArr.first

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

此外,在完成这行代码之后,请按照以下步骤进行操作:

returnArr = returnArr().first

完全正常,returnArr现在与returnArr()不同。这是怎么回事?

1 个答案:

答案 0 :(得分:4)

当你有这条线时

 returnArr = returnArr.first

Ruby看到(并执行)这个:

 returnArr = nil
 returnArr = returnArr.first

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

不要再这样做了。特别是在真正的应用程序中。