1

私はRuby1.8.6のドキュメントを探していますが、そこには何も言及されていません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でありObjectObjectこのインスタンスメソッドを実装していません。

4

3 に答える 3

6

これは、Hashに組み込まれているモジュールであるEnumerableに由来します。

Hash.ancestorsEnumerableの言及を見つけるために行います。

Hash.ancestors => [Hash, Enumerable, Object, Kernel, BasicObject]
Enumerable.instance_methods.grep(/each/) # => [:each_with_index, :reverse_each, :each_slice, :each_cons, :each_with_object]
于 2011-05-23T23:00:37.450 に答える
2

これはEnumerableモジュールからのものです。ここを参照してください。この背後にある概念は、ここここmixinsで詳細に説明されていると呼ばれます。

于 2011-05-23T23:02:10.410 に答える
1

列挙可能なモジュール

于 2011-05-23T23:01:19.290 に答える