On Mon, Nov 5, 2012 at 1:10 PM, Assaf Shomer <[email protected]> wrote:

> Ruby beginner here.
> I noticed the following code in the pickaxe book 1.9 page 101:
> ---------------------
> class VowelFinder
>  include Enumerable
>  def initialize(string)
>   @string = string
>  end
>  def each
>   @string.scan(/[aeiou]/) do |vowel|
>   yield vowel
>   end
>  end
> end
> --------------------
> What does it mean to have a *yield* inside a block? I thought yield is
> the way a method calls the block. Here the only yield is inside a block
> and there is no other method.
>

The yield is inside #each.  It invokes the block passed to method #each.
Note this:

irb(main):001:0> def t; yield :pre; 2.times {|i| yield i}; yield :post; end
=> nil
irb(main):002:0> t {|x| p x}
:pre
0
1
:post
=> :post

As you can see, yield invokes the block no matter where inside method #t it
is placed.

Kind regards

robert



-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

-- You received this message because you are subscribed to the Google Groups 
ruby-talk-google group. To post to this group, send email to 
[email protected]. To unsubscribe from this group, send email 
to [email protected]. For more options, visit this 
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en

Reply via email to