RCR 296: Destructive methods return self

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. :wink:

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 self

Christian Neukirchen:
>>> gsub! returns self
>>> gsub!? returns self or nil (yes, it looks silly)
> I actually like that. :slight_smile:

+1

Malte