2011-08-08 7 views
0

私はProgramming Ruby 1.9 (3rd edition): The Pragmatic Programmers' Guideを読んでおり、コード例の1つについて質問があります。 101ページこの状況で収率は何ですか?

は、この例がある:each方法において

class VowelFinder 
    include Enumerable 
    def initialize(string) 
     @string = string 
    end 
    def each 
     @string.scan(/[aeiou]/) do |vowel| 
      yield vowel 
     end 
    end 
end 

vf = VowelFinder.new("the quick brown fox jumped") 
vf.inject(:+) # => "euiooue" 

scanから各照合結果がyieldが呼び出されたブロックに渡されます。しかし、正確にはyield vowelラインは何ですか?私が理解するところでは、yieldは、メソッド内からブロック(メソッドに渡されたもの)を呼び出すために使用されます。この状況では何をしていますか?

答えて

1

これは、理解したとおり、メソッドに渡されたブロックを呼び出しています。

0

これは、 mix-in + each(これは、必要な要素を生成する必要があります)の古典的な使用法です。 eachを実装するだけで、すべてのクールメソッド(例ではinject)が列挙可能なものになります。参照:

http://www.ruby-doc.org/core/classes/Enumerable.html

は「可算ミックスインは、いくつかのトラバーサルと検索方法でコレクションクラスを提供し、ソートする機能を持つクラスは、コレクションの連続したメンバーを生成するそれぞれの方法を、提供しなければなりません。」

関連する問題