From: Ralph Shnelvar Date: 2012-01-14T23:38:00+09:00 Subject: Language deisng question and stinrgs and object id's a = "string" b = "string" causes three objects with different object id's to be created. irb(main):001:0> a = "string" => "string" irb(main):002:0> b = "string" => "string" irb(main):003:0> "string".object_id => 19087248 irb(main):004:0> a.object_id => 21660552 irb(main):005:0> b.object_id => 22419972 Yet a = "string" b = a only causes two objects to be created. irb(main):001:0> a = "string" => "string" irb(main):002:0> b = a => "string" irb(main):003:0> "string".object_id => 22106544 irb(main):004:0> a.object_id => 22650984 irb(main):005:0> b.object_id => 22650984 Yes, I know that one can do a = "string" b = a.clone I understand what's happening. I just don't know why the language designer(s) decided on -- what is to me -- surprising behavior. So I have a Car Talk Puzzler (for which I do not have an answer): How would I initialize a bunch of strings so that they are clones rather than the same object? In other words how would I do the following which is invalid Ruby. a = b.clone = c.clone = "How to clone?"