You want chop!() because you want to modify @x. chop() just returns a
copy of the string with the last char removed. But even better use
chomp!(), because chop!() and chop() always remove the last char -
regardless what it is:
s="abcde\n"
=> "abcde\n"
s.chop!
=> "abcde"
s.chop!
=> "abcd"
s.chop!
=> "abc"
s.chop!
=> "ab"
s.chop!
=> "a"
s.chop!
=> ""
s.chop!
=> nil
Do you use a definitive combination of file write and read that will
always work, or is there another trick I don't know about yet.
You want chop!() because you want to modify @x. chop() just returns a
copy of the string with the last char removed. But even better use
chomp!(), because chop!() and chop() always remove the last char -
regardless what it is:
s="abcde\n"
=> "abcde\n"
s.chop!
=> "abcde"
s.chop!
=> "abcd"
s.chop!
=> "abc"
s.chop!
=> "ab"
s.chop!
=> "a"
s.chop!
=> ""
s.chop!
=> nil
Do you use a definitive combination of file write and read that will
always work, or is there another trick I don't know about yet.
Kind regards
robert
Thankyou, I love you loads.
Strange really how I read that "Returns a new string..." a billion times, without actually noticing what it said.
But then I'm the same with tax return forms.
So as a reward you are welcome to join me in a all expenses paid round the world holiday on my yaght. it's about 3 foot long and 2 foot wide with one oar each. Let me know when your avaiable.
"BearItAll" <spam@rassler.co.uk> schrieb im Newsbeitrag
news:1107432176.47652.0@demeter.uk.clara.net...
So as a reward you are welcome to join me in a all expenses paid round
the world holiday on my yaght. it's about 3 foot long and 2 foot wide
with one oar each. Let me know when your avaiable.
Lemmesee, I think, before I can join this invitation I'll have to undergo
some shrinking - otherwise there'll be hardly enough space on your
"ship"...
"Pit Capitain" <pit@capitain.de> schrieb im Newsbeitrag
news:42021CFA.7000006@capitain.de...
Robert Klemme schrieb:
> "BearItAll" <spam@rassler.co.uk> schrieb im Newsbeitrag
> news:1107432176.47652.0@demeter.uk.clara.net...
>>So as a reward you are welcome to join me in a all expenses paid round
>>the world holiday on my yaght. it's about 3 foot long and 2 foot wide
>>with one oar each. Let me know when your avaiable.
>
> Lemmesee, I think, before I can join this invitation I'll have to
undergo
> some shrinking - otherwise there'll be hardly enough space on your
> "ship"...
"Caio Tiago Oliveira" <caiot1@ibest.com.br> schrieb im Newsbeitrag
news:42025196.2050502@ibest.com.br...
BearItAll, 3/2/2005 09:05:
> Strange really how I read that "Returns a new string..." a billion
> times, without actually noticing what it said.
@x = @x.chop
is the same as @x.chop!
No, it is not. In many applications this might be equivalent but it's not
the same. @x.chop! does not create a new instance, i.e. whoever holds a
reference to that instance sees the change. @x=@x.chop creates a new
instance so everybody else referencing the old value of @x sees no change.
Also, it makes a difference when you consider #freeze:
s = "abcd"
=> "abcd"
s.freeze
=> "abcd"
s.chop!
TypeError: can't modify frozen string
from (irb):3:in `chop!'
from (irb):3
s = s.chop
=> "abc"
Also, it makes a difference performance wise. The first form is usually
slower since a new instance has to be created.
@x.chop return a new string you can assing to a variable you want to.