100, "here" => 200, "c" => "hello"} 我需要像下面这样的方法来访问散列键: tempData.a #100 te-6ren">
gpt4 book ai didi

ruby - 如何将散列键转换为方法名称?

转载 作者:数据小太阳 更新时间:2023-10-29 06:21:45 26 4
gpt4 key购买 nike

这是我的哈希:

tempData = {"a" => 100, "here" => 200, "c" => "hello"}

我需要像下面这样的方法来访问散列键:

tempData.a #100
tempData.here # 200

最佳答案

你可以把你的散列包在 OpenStruct 中:

require 'ostruct'
tempData = {"a" => 100, "here" => 200, "c" => "hello"}
os = OpenStruct.new tempData
os.a #=> 100
os.here #=> 200

如果你真的真的想要,你也可以猴子修补 Hash 类,但我建议不要这样做:

class Hash
def method_missing(m, *args, &blk)
fetch(m) { fetch(m.to_s) { super } }
end
end

tempData = {"a" => 100, "here" => 200, "c" => "hello"}
tempData.a #=> 100

更新:在我的personal extensions library我添加了一个 Hash#to_ostruct方法。这将递归地将散列转换为包含所有嵌套散列的 OpenStruct

关于ruby - 如何将散列键转换为方法名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423484/

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