On Tuesday, January 21, 2003, 11:03:25 AM, Dmitri wrote: > Gavin Sinclair wrote: >>>:) Yes... actually I guess you'd have to default it to >>>nil if you actually wanted it to accept NO ARGUMENT >>>passed in: def foo(foobar=nil) >> >> Just to emphasise the point. If you call *your* code with no >> argument, the parser or whever you call it will spit the dummy. Just >> as zero is a number, nil qualifies as an argument. > I'd effectively get a 'array index out of bounds' error or something > yeah? Try it and see (that's what irb is for): >> def foo(foobar) >> puts (foobar || 9) >> end => nil >> foo ArgumentError: wrong # of arguments(0 for 1) from (irb):7:in `foo' from (irb):7 >> foo(nil) 9 => nil >> foo("son of a gun") son of a gun => nil If you haven't used irb before, get used to it! It was invoked with --simple-prompt above (why isn't there a short command for that?). The "nil" after each method invocation are the return value of the method, which is the r/v of puts, which is always nil. When mucking around in irb, there's no need to use puts in examples like the above, e.g. >> def foo(foobar) >> foobar || 9 >> end => nil >> foo ArgumentError: wrong # of arguments(0 for 1) from (irb):4:in `foo' from (irb):4 >> foo(nil) => 9 >> foo("sun of a gun") => "sun of a gun" irb is too useful to ignore. Gavin