String.insert newbie question

M

Marco Guiseppe

Hello,

I've only been checking out Ruby for a couple of days, but today I came
across this problem.

If I do this:

#!/usr/bin/env ruby -w

string1 = "abc"
string2 = string1

string2.insert(-1, "def")

puts string1
puts string2

Then the result is:

abcdef
abcdef


How come string1 gets changed?!?

Thanks,

Marco
 
M

Marco Guiseppe

Jason said:
Hope that helps.

Thanks for clearing that up, didn't know about object_id. Is this
behaviour common in programming languages? Seems weird to me.

Then again I'm very new to all of this.

This means I could do

string1 = "abc"
string2 = string1
string3 = string2
string4 = string3

and they all will change if I change string 4. What can I do to keep
string1 stay the same even if I change string 4?
 
J

John Mettraux

Thanks for clearing that up, didn't know about object_id. Is this
behaviour common in programming languages? Seems weird to me.

It's not weird if you consider :

customer0 = Customer.new("John", "Doe")
customer1 = customer0
customer0.first_name = "Paul"
puts customer1.first_name

customer0 and customer1 points to the same instance.

Java strings are misleading.


Best regards,
 
M

Marco Guiseppe

John said:
customer0 = Customer.new("John", "Doe")
customer1 = customer0
customer0.first_name = "Paul"
puts customer1.first_name

customer0 and customer1 points to the same instance.

Yes, that makes sense. I've even found a much simpler solution to my
original problem that makes the question irrelevant.

Thanks, everyone!
 
D

Damian Terentyev

Hi!

Yes, that makes sense. I've even found a much simpler solution to my
original problem that makes the question irrelevant.

Thanks, everyone!

I would like to notice, that if you ever need two separate objects, you
can always use a dup method, e.g:

string2 = string1.dup # Will have two different string instances

Your sincerely,
Damian/Three-eyed Fish
 
B

Bill Mosteller

Thanks very, very much, I was mired in a problem with this and you've
rescued me.
Bill Mosteller
Eloqua
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,168
Messages
2,570,914
Members
47,455
Latest member
Delilah Code

Latest Threads

Top