缺少数字 class 和方法

Numeric class and method missing

我是 Ruby 的新手,我不明白为什么当我 运行 这个 ruby 脚本时,

class Numeric
 def method_missing(arg)
    puts self
  end
end

puts 5

它returns

[...]
5

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

谢谢!

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

调用它

method_missing 中调用 puts self,相当于 puts 5。这是一个递归 Ruby 显示为 [...].

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

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