缺少数字类和方法

时间:2016-02-13 21:01:18

标签: ruby numeric self

我是Ruby的新手,我无法弄清楚为什么我运行这个ruby脚本时,

class Numeric
 def method_missing(arg)
    puts self
  end
end

puts 5

它返回

[...]
5

我认为self应该只返回[...],因为没有传入任何参数。

谢谢!

1 个答案:

答案 0 :(得分:4)

puts以特殊方式处理数组。因此,puts 5尝试调用5.to_ary,在实施method_missing时,会使用:to_ary参数调用它。

method_missing内,您拨打的puts self相当于puts 5。这是一个Ruby显示为[...]的递归。

这个递归数组产生相同的输出:

ary = []
#=> []
ary << ary
#=> [[...]]