From: Fritz Heinrichmeyer Date: 2006-01-06T22:48:00+09:00 Subject: Re: How to write a destructive string method? Henrik schrieb: > I haven't been able to figure out how to write a destructive string > method of my own. How do I change the value of "self"? This is what I > tried first: it makes no sense to change self, but you can change the data of self: ---- test.rb class String def makefirstA self[0]= 65 self end end x="xxxx" p x.makefirstA p x --- end of test.rb delivers ruby test.rb "Axxx" "Axxx" > > class String > alias_method(:orig_upcase, :upcase) > > def upcase > orig_upcase.tr("åäö", "ÅÄÖ") > end > > def upcase! > self = self.upcase > end > end > > "upcase" works fine but "upcase!" doesn't - "can't change the value of > self". Nor can I do (assuming another alias_method): > > def upcase! > self.old_upcase! > self.tr!("åäö", "ÅÄÖ") > end > > or the same thing chained (self.old_upcase!.tr!(...)), because that only > returns nil. I've even grasped for straws like > > def upcase! > =(self.upcase) > end > > with no luck. Very grateful for any help. > -- Mit freundlichen Grüßen Fritz Heinrichmeyer FernUniversität, LG ES, 58084 Hagen (Germany) tel:+49 2331/987-1166 fax:987-355