gpt4 book ai didi

arrays - ruby - 将多个哈希插入到 ruby​​ 中的数组中

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:28 25 4
gpt4 key购买 nike

我想将多个散列插入到一个数组中,该数组将创建一个散列数组。但是每次我向数组添加一个新的散列时,它都会覆盖以前的散列。知道发生了什么事吗?

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"}

我不确定为什么第一个散列中的值被覆盖了。感谢您的帮助。

最佳答案

您在数组的两个不同位置保存相同的散列。将 Ruby 视为添加对象引用,而不是每次将对象嵌套在另一个对象中时都复制该对象。

使用不同的值执行此操作,您可能希望每次都创建一个新值:

part_array = [ ]
part_array << {
# ... Hash entry
}

您可能想将同一事物两次放入数组中是有正当理由的,这可能是使用大型数据结构时节省内存的一种方式。

请注意,Ruby 倾向于强烈推荐像 part_array 这样的变量名,全部小写。同样,对于哈希键,符号通常是首选,因为它们在内部并不昂贵。

关于arrays - ruby - 将多个哈希插入到 ruby​​ 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39762266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com