Stefano Crocco
7/1/2007 10:05:00 PM
Alle domenica 1 luglio 2007, Ryan Allan ha scritto:
> Hello Everyone,
>
> I'm trying to make a function take arguments in a particular way.
>
> This is what I want to create:
>
> #Variable argument testing
> def function(*sometimes)
>
> if sometimes.nil?
> print "Not given!"
> else
> print "Here!"
> end
>
> end
>
> function
> [EOF]
>
> As I understand it, the * operator bundles the argument into an array,
> so that if test returns true. I know that I can use "if
> sometimes.length==0" to get the same behaviour, but that is rather
> obscure compared to the first version.
>
> Is there some other way to set up the argument list? (Alas, I have found
> nothing in the documentation or the Forum.)
>
> Thank you,
> -Ryan
I can't think of any other way to make a method take any number of arguments,
but remember that there's a shorter way to tell whether an array is empty:
the empty? method:
def function(*sometimes)
if sometimes.empty?
print "Not given!"
else
print "Here!"
end
end
This way, it's as clear as what you wanted to use. Besides, even if it had
been possible, your approach would have had a problem: you wouldn't have been
able to distinguish the case of a single nil argument from the case of no
arguments:
function(nil)
function()
The correct approach solves this problem: if no arguments are passed,
sometimes is empty (empty? returns true); otherwise it's not empty, even if
all arguments are nil.
I hope this helps
Stefano