[#300] Ruby 1.3.3-990507 — matz <matz@...>
Ruby 1.3.3-990507 is out, check out:
1 message
1999/05/07
[#314] Arity features for Proc object? — matz@... (Yukihiro Matsumoto)
A mail from <yeboah@tu-harburg.de> is somehow rejected by the list
12 messages
1999/05/17
[#315] Re: Arity features for Proc object?
— matz@... (Yukihiro Matsumoto)
1999/05/17
[#316] Re: Arity features for Proc object?
— gotoken@... (GOTO Kentaro)
1999/05/17
In message "[ruby-talk:00315] Re: Arity features for Proc object?"
[#318] Re: Arity features for Proc object?
— matz@... (Yukihiro Matsumoto)
1999/05/17
Hi.
[#319] Re: Arity features for Proc object?
— gotoken@... (GOTO Kentaro)
1999/05/17
In message "[ruby-talk:00318] Re: Arity features for Proc object?"
[#320] Re: Arity features for Proc object?
— matz@... (Yukihiro Matsumoto)
1999/05/17
Hi.
[#323] binding — Pros Yeboah <yeboah@...>
Hi
5 messages
1999/05/18
[#357] thinking aloud — "Bryce Dooley" <thecrow@...>
First off, I think Ruby is a very nice scripting language.
7 messages
1999/05/29
[ruby-talk:00320] Re: Arity features for Proc object?
From:
matz@... (Yukihiro Matsumoto)
Date:
1999-05-17 09:56:58 UTC
List:
ruby-talk #320
Hi.
In message "[ruby-talk:00319] Re: Arity features for Proc object?"
on 99/05/17, GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:
|>I see. Thank you. I expected you to answer this question, Gotoken.
|
|Aha, I felt that I was called :-)
Thank you for your kindness and help all the time, especially
for mathematical topics.
|>Parameter assignment for blocks is done by multiple assignment, which
|>does not do the number check. I know it's little bit weird for Proc
|>objects, but the Proc is relatively new feature to Ruby. I couldn't
|>ignore compatibility. I would add argument number check to the Proc
|>objects in the future version, maybe.
|
|I hope so. But it might cause serious incompatibility to earlier
|versions because Proc.new{|i|...} can receive .call(a,b) as an array.
|We should have discussions.
Well, well, I opened eval.c to see how hard to implement arity and
arugument check for block evaluation, and then spent about 1 hour, now
you see, it's done. :-)
I defined two methods, Proc#arity, and Method#arity, which return the
number of required arguments for the Proc and Method objects. If they
accepts variable number of arguments, the arity return negative number.
And added some checking code to the function massign() to accomplish
argument check like methods. Of cource you can't detect
proc = Proc.new{|i| ..}
proc.call(a,b)
because it's completely legal. But:
proc = Proc.new{|i,| ..} # explicitly declare single argument
proc.call(a,b)
and
proc = Proc.new{|i,j| ..} # more than two arguments
proc.call(a,b,c)
will cause ArgumentError exception, just like methods.
I think it does not break any existing code.
matz.