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/.
Is there a way that I can write a method f! so that:
Yep. Just do this:
==== begin snippet ====
def newify!(s)
s.gsub!(/test/, "new")
end
==== end snippet ====
Now you'll get:
==== begin snippet ====
s = "here's a test string"
newify!(s)
puts s
# => "here's a new string"
==== end snippet ====
~ jf
···
--
John Feminella
Principal Consultant, BitsBuilder
LI: http://www.linkedin.com/in/johnxf
SO: User John Feminella - Stack Overflow
On Sun, Feb 27, 2011 at 15:45, 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/\.
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/\.