我是Ruby的新手,我无法弄清楚为什么我运行这个ruby脚本时,
class Numeric
def method_missing(arg)
puts self
end
end
puts 5
它返回
[...]
5
我认为self应该只返回[...]
,因为没有传入任何参数。
谢谢!
答案 0 :(得分:4)
puts
以特殊方式处理数组。因此,puts 5
尝试调用5.to_ary
,在实施method_missing
时,会使用:to_ary
参数调用它。
在method_missing
内,您拨打的puts self
相当于puts 5
。这是一个Ruby显示为[...]
的递归。
这个递归数组产生相同的输出:
ary = []
#=> []
ary << ary
#=> [[...]]