Hello,
this is OK for both, Ruby 1.8 and 1.9:
f = Proc.new{}; Class.new(&f)
But why is that valid for Ruby 1.8 only?
f = lambda{}; Class.new(&f)
Ruby 1.9 complains
`initialize': wrong number of arguments (1 for 0) (ArgumentError)
from ./now.rb:21:in `new'
from ./now.rb:21:in `<main>'
Regards
Thomas
Phlip1
(Phlip)
2
Thomas Hafner wrote:
Ruby 1.9 complains
`initialize': wrong number of arguments (1 for 0) (ArgumentError)
from ./now.rb:21:in `new'
from ./now.rb:21:in `<main>'
Just a guess does this fix it?
f = lambda{|o| }; Class.new(&f)
Something to do with lambdas defend their arity...
this is OK for both, Ruby 1.8 and 1.9:
f = Proc.new{}; Class.new(&f)
But why is that valid for Ruby 1.8 only?
f = lambda{}; Class.new(&f)
Ruby 1.9 complains
`initialize': wrong number of arguments (1 for 0) (ArgumentError)
from ./now.rb:21:in `new'
from ./now.rb:21:in `<main>'
the error message tells you why. it isn't hard to figure out what the arg is either:
>> f = lambda{|x| p x }; Class.new(&f)
#<Class:0x428ec>
···
On Apr 25, 2009, at 14:20 , Thomas Hafner wrote: