Hm...actually this reminds me of a Perl module called "Want" by Robin
Houston. With that module, you could get extremely fine control over
calling context. For example, you could do a sort of "lookahead" to, in
effect, see if the method was chained or not:
use Want;
sub foo{
...
if(want("OBJECT")){
return $self;
}
else{
# return some other value based on context
}
}
I used this module in my Set::Array, Set::Hash and Set::String Perl
modules and was quite happy with it.
Could something like "object_wanted?" be added? Then you, the code
writer, could solve the "self or nil" issue yourself like this:
class Foo
def some_method!
if object_wanted?
return self
end
# otherwise, return nil (or whatever)
end
end
You can take a look at Want at
http://cpansearch.perl.org/~robin/Want-0.08/Want.pm
Just a thought. Now I suppose someone is going to tell me you could do
this all along. ![]()
Regards,
Dan
···
-----Original Message-----
From: Malte Milatz [mailto:malteNOSPAM@gmx-topmail.de]
Sent: Tuesday, March 22, 2005 10:00 AM
To: ruby-talk ML
Subject: Re: RCR 296: Destructive methods return selfChristian Neukirchen:
>>> gsub! returns self
>>> gsub!? returns self or nil (yes, it looks silly)
> I actually like that.+1
Malte