Fritz Heinrichmeyer
1/6/2006 1:32:00 PM
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