Я читаю Программирование Ruby 1.9 (3-е издание): Прагматическое руководство для программистов , и у меня есть вопрос об одном из примеров кода.
На странице 101 есть этопример:
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"
В методе each
каждый результат сопоставления из scan
передается в блок, где вызывается yield
.Но что именно делает строка yield vowel
?Из того, что я понимаю, yield
используется для вызова блока (который был передан методу) из метода.Что он делает в этой ситуации?