Proc params extension


#1

Basically what I need is:

Proc.new { |a,b,c| }.params # => [:a, :b, :c]

I was looking into creating a C extension… but yikes the closure
portion is far beyond my limited C skills (lack of). Any ideas? is this
even really possible with the way evaluation is performed?


#2

Hi,

In message “Re: Proc params extension”
on Fri, 16 Jan 2009 09:27:04 +0900, Tj Holowaychuk
removed_email_address@domain.invalid writes:
|
|Basically what I need is:
|
|Proc.new { |a,b,c| }.params # => [:a, :b, :c]

1.9 has Proc#parameters:

Proc.new { |a,b,c| }.parameters

=> [[:opt, :a, nil], [:opt, :b, nil], [:opt, :c, nil]]

which means all a, b, c are optional, and their default values are
nil.

          matz.

#3

Yukihiro M. wrote:

Hi,

In message “Re: Proc params extension”
on Fri, 16 Jan 2009 09:27:04 +0900, Tj Holowaychuk
removed_email_address@domain.invalid writes:
|
|Basically what I need is:
|
|Proc.new { |a,b,c| }.params # => [:a, :b, :c]

1.9 has Proc#parameters:

Proc.new { |a,b,c| }.parameters

=> [[:opt, :a, nil], [:opt, :b, nil], [:opt, :c, nil]]

which means all a, b, c are optional, and their default values are
nil.

          matz.

perfect! that tree would be fantastic, would it be reasonably possible
to backport as a gem extension? Im not sure what would be involved, or
if to many changes would have to be made.

Thanks matz


#4

ps. I know you get this all the time, but thanks for Ruby man! I have
only been using it for about 2 or 3 months, but I love it, has changed
my perspective on programming thats for sure. Nice to actually enjoy
what I do again :slight_smile:


#5

Hi,

In message “Re: Proc params extension”
on Fri, 16 Jan 2009 11:09:30 +0900, Tj Holowaychuk
removed_email_address@domain.invalid writes:

|perfect! that tree would be fantastic, would it be reasonably possible
|to backport as a gem extension? Im not sure what would be involved, or
|if to many changes would have to be made.

It’s possible, but I am not sure if it’s reasonably possible, since
1.8 and 1.9 are totally different inside.

          matz.