我在查看Ruby 1.8.6 docs,并且没有提及each_with_index
。
但是,如果我启动Ruby 1.8.7或1.9.2并运行以下命令,它可以工作:
h = {:a => 1, :b => 2.2}
h.each_with_index do |pair, i|
p pair, i
end
each_with_index
来自哪里? Hash.superclasss
为Object
,Object
未实现此实例方法。
答案 0 :(得分:6)
它来自Enumerable,一个混入Hash的模块。
请Hash.ancestors
找到Enumerable。
Hash.ancestors => [Hash, Enumerable, Object, Kernel, BasicObject]
Enumerable.instance_methods.grep(/each/) # => [:each_with_index, :reverse_each, :each_slice, :each_cons, :each_with_object]
答案 1 :(得分:2)
答案 2 :(得分:1)