我试图找出为什么下面的代码不会返回相同的结果:红宝石变量同治问题
CODE 1
p0 = "hello"
a = []
b = p0
1.upto(5) do |i|
b.insert(2,"B")
a.push b
end
a => ["heBBBBBllo", "heBBBBBllo", "heBBBBBllo", "heBBBBBllo", "heBBBBBllo"]
CODE 2
p0 = "hello"
a = []
b = p0
1.upto(5) do |i|
b.insert(2,"B")
a.push b.inspect
end
a => ["\"heBllo\"", "\"heBBllo\"", "\"heBBBllo\"", "\"heBBBBllo\"", "\"heBBBBBllo\""]
我需要的是代码2的结果,但我不需要像检查方法那样的转义字符。
老实说,我真的不明白为什么检查方法有效,为什么在代码1中没有。 看起来在代码1中,“b”用作指针,并且每次更新时,所有“链接”-b都会更新。
任何线索?
谢谢你提前。
谢谢大家,非常有用,最后我明白了这个难题的缺失部分;)。只是为了好奇:使用b.to_s将会像代码1一样工作。为什么? .to_s方法应该返回一个新的字符串,如.inspect?再次感谢你!!! – r0b0t