From: Adam Prescott Date: 2011-02-28T06:09:29+09:00 Subject: Re: Creating my own method --90e6ba5bb8d96820e4049d49fa55 Content-Type: text/plain; charset=UTF-8 You can have ! at the end of your methods, so your f! is a valid method definition. To replace the contents of the string, instead of creating a new instance, look at String#replace. Also, note that ! at the end of a method name does not always mean "modifies the receiver," it is, in general, a convention meaning "something odd is happening here." You can have !-methods without a corresponding !-less method, and !-less methods can modify the receiver. In fact, String#replace itself has no ! -- !. On Sun, Feb 27, 2011 at 8:45 PM, Paul Sholtz wrote: > Suppose I have a string, say s = "test string" .. the difference between > s.gsub and s.gsub! is whether or not the method modifies the object > itself. That is, s.gsub simply returns a new string w/ the appropriate > modifications, while s.gsub!(/t/,"T") will change s to a new value, to > wit, "TesT sTring".. > > My question is, is there a way that I can create my own "!" methods in > Ruby? > > For instance, if I have: > > def f(s) > s = "new string" > end > > and then I call: > > s = "test string" > f(s) > puts s > > the output is still "test string".. > > Is there a way that I can write a method f! so that: > > def f!(s) > s = "new string" > end > > and then when I call: > > s = "test string" > f!(s) > puts s > > the output will be "new string"? > > -- > Posted via http://www.ruby-forum.com/. > > --90e6ba5bb8d96820e4049d49fa55--