gpt4 book ai didi

ruby - 在不复制键的情况下创建数据结构

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

我有多个具有以下两个哈希表的类。两个映射必须具有一组相同的键。我的问题是有很多类具有这种结构,并且键集会随着时间而改变。

mapping_1 = {
:key_1 => "attr_1_1",
:key_2 => "attr_2_1",
:key_3 => "attr_3_1"
}

mapping_2 = {
:key_1 => "attr_1_2",
:key_2 => "attr_2_2",
:key_3 => "attr_3_2"
}

我需要能够访问给定两个映射的键和来自映射 1 的值的键的值。换句话说,我需要能够执行这些操作:

mapping_1[:key_1]
mapping_1.index("attr_2_1") #(Ruby 1.8.7)
mapping_2[:key_3]

问题:有没有一种方法可以让我不必在两个结构中重复编写 key ?

我想过将键映射到一个数组( :key_1 => ["attr_1_1", "attr_1_2"] )但这行不通,因为当我运行命令 mapping_1.index() 不知道第二个属性的值是多少

最佳答案

我认为您绝对应该创建自己的哈希类并使用它来代替 Hash。它将处理键集,并包装每个对象的存储。

它可以有类方法来编辑您的键集,例如:

def self.add_key(key, default_value)
def self.remove_key(key)

以及您将在容器类中使用的实例方法,它们将模仿 Hash 方法:

def get(key)
def set(key, value)
def find_key(value)

等当然,您可以使用普通的 Hash 作为底层存储。如果您需要在向任何实例添加新 key 时扩展 key 集,只需从 set 调用 add_key

关于ruby - 在不复制键的情况下创建数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504176/

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