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 <paul.sholtz / gmail.com> 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/.
>
>