【发布时间】:2016-09-29 05:43:16
【问题描述】:
我想将多个散列插入一个数组,这将创建一个散列数组。但是每次我向数组添加一个新的散列时,它都会覆盖以前的散列。知道发生了什么吗?
partArray = []
partHash = {}
partHash["name"] = "Item1"
partHash["owner"] = "Item1"
#Insert first hash into array
partArray << partHash
puts partArray
#new set of key, value pairs
#to be appended to array
partHash["name"] = "Item2"
partHash["owner"] = "Item2"
#Append second hash into array
partArray << partHash
puts partArray
输出:
{"name"=>"Item1", "owner"=>"Item1"}
new Array is :
{"name"=>"Item2", "owner"=>"Item2"}
{"name"=>"Item2", "owner"=>"Item2"}
我不确定为什么第一个哈希中的值被覆盖。任何帮助表示赞赏。
【问题讨论】:
-
也许这会有所启发:
p partArray.map(&:object_id) -
获取相同的散列object_id,具有不同的值。 {"name"=>"Item1", "owner"=>"Item1"} [70094101888900] 新数组是:{"name"=>"Item2", "owner"=>"Item2"} {"name"= >"Item2", "owner"=>"Item2"} [70094101888900, 70094101888900]