# Anonymous class, body defined by Proc.new vs. lambda

**URL:** <https://www.ruby-forum.com/t/anonymous-class-body-defined-by-proc-new-vs-lambda/166481>\
**Category:** Ruby\
**Created:** [April 25, 2009, 11:20pm UTC](https://www.ruby-forum.com/t/anonymous-class-body-defined-by-proc-new-vs-lambda/166481 "2009-04-25T23:20:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![samoht](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ac8455/32.png) [@samoht](https://www.ruby-forum.com/u/samoht)\
**Post date:** [April 25, 2009, 11:20pm UTC](https://www.ruby-forum.com/t/anonymous-class-body-defined-by-proc-new-vs-lambda/166481/1 "2009-04-25T23:20:34Z")

</div>

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 `’

Regards  
Thomas

---

<div class="post-metadata">

**Author:** ![samoht](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ac8455/32.png) [@samoht](https://www.ruby-forum.com/u/samoht)\
**Post date:** [April 25, 2009, 11:43pm UTC](https://www.ruby-forum.com/t/anonymous-class-body-defined-by-proc-new-vs-lambda/166481/2 "2009-04-25T23:43:23Z")

</div>

On Apr 25, 2009, at 14:20 , Thomas H. wrote:

> 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 `’

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

---

<div class="post-metadata">

**Author:** ![samoht](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ac8455/32.png) [@samoht](https://www.ruby-forum.com/u/samoht)\
**Post date:** [April 25, 2009, 11:35pm UTC](https://www.ruby-forum.com/t/anonymous-class-body-defined-by-proc-new-vs-lambda/166481/3 "2009-04-25T23:35:46Z")

</div>

Thomas H. 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 `’

Just a guess does this fix it?

f = lambda{|o| }; Class.new(&f)

Something to do with lambdas defend their arity…
