On 6/3/07, Nobuyoshi Nakada <nobu / ruby-lang.org> wrote:
> Hi,
>
> At Mon, 4 Jun 2007 13:25:50 +0900,
> david karapetyan wrote in [ruby-talk:254219]:
> > thanks. i didn't realize i had to provide the block as well when i was
> > creating the closure. i was hoping for a closure that could take a different
> > block every time. i wanted fib to be a function that had access to a and b
> > and every call to fib would require a block. as it is fib has its block
> > fixed at creation time. do you know of a way of doing what i wanted to do
> > originally?
>
> You need ruby 1.9.  Block passing to a block isn't supported in
> 1.8.
>
>   def fibber
>     a = 1
>     b = 1
>     lambda do |&block|
>       block.call(a)
>       a,b = a+b,a
>     end
>   end
>
>   irb(main):010:0> fib = fibber
>   => #<Proc:b7ba2338@(irb):6>
>   irb(main):011:0> 10.times {fib.call {|x|p x}}
>   1
>   2
>   3
>   5
>   8
>   13
>   21
>   34
>   55
>   89
>   => 10
>
> --
> Nobu Nakada
>
>

I thought I read somewhere that 1.9 wasn't going to support closures.
So it apparently does then?

-- 
-fREW