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