以下兩種情況看起來相似,但結果不同。有趣的是,也許有人會犯這樣的錯誤。關於在紅寶石散列中賦值的奇怪之處
CASE1
class A
def initialize
@a = @b = @c = @d = @e = {}
@e["e"] = "eeeeee"
puts @a
puts @b
puts @c
puts @d
puts @e
end
end
a = A.new
給出:
{"e"=>"eeeeee"}
{"e"=>"eeeeee"}
{"e"=>"eeeeee"}
{"e"=>"eeeeee"}
{"e"=>"eeeeee"}
CASE 2
class B
def initialize
@a = @b = @c = @d = @e = {}
@e = {"e" => "eeeeee"}
puts @a
puts @b
puts @c
puts @d
puts @e
end
end
b = B.new
給出:
{}
{}
{}
{}
{"e"=>"eeeeee"}
編輯
結果是CASE 1和CASE 3之間的不同,但它們以相同的方式分配值。
CASE 3
class C
def initialize
@a = {}
@b = {}
@c = {}
@d = {}
@e = {}
@e["e"] = "eeeee"
puts @a
puts @b
puts @c
puts @d
puts @e
end
end
c = C.new
#the result of case 3
{}
{}
{}
{}
{"e"=>"eeeee"}
這是一個問題嗎?你正在做兩件完全不同的事情。有什麼奇怪的? – 2011-12-16 01:49:50