【发布时间】:2017-07-08 01:51:46
【问题描述】:
我有这个巨大的嵌套 Ruby 哈希:
hash_filter = {
"m-ct-filter-bot"=>{
"parameters"=>{
"filter_action"=>"keep", "filter_key"=>"classification.identifier",
"filter_regex"=>nil, "filter_value"=>""
},
"group"=>"Expert", "name"=>"Filter", "module"=>"bots.experts.filter.expert",
"description"=>"modified by mf370"
},
"m-vision-filter-bot"=>{
"parameters"=>{
"filter_action"=>"keep", "filter_key"=>"classification.identifier",
"filter_regex"=>nil, "filter_value"=>""
},
"group"=>"Expert", "name"=>"Filter", "module"=>"bots.experts.filter.expert",
"description"=>"modified by mf370"
},
"m-tele-filter-bot"=>{
"parameters"=>{
"filter_action"=>"keep", "filter_key"=>"classification.identifier",
"filter_regex"=>nil, "filter_value"=>""
},
"group"=>"Expert", "name"=>"Filter", "module"=>"bots.experts.filter.expert",
"description"=>"modified by mf370"
}
}
还有这个数组:
array_id = ["ct","vision","tele"]
我正在尝试使用 array_id 的值更新每个嵌套哈希上的键 "filter_value" 上的值。为了有filter_value => ct,filter_value => vision,filter_value => tele在对应的哈希上。
我有以下代码:
array_id.each do |id|
hash_filter.each_pair do |key, value|
value["parameters"]["filter_value"] = id
end
end
但是,当我运行此代码时,密钥 filter_value 始终使用 array_id 的最后一个值更新,这意味着我所有的哈希值都将具有相同的值 filter_value => tele。
我没有收到任何错误,只是输出不是我所期望的。 你们能帮帮我吗? :)
谢谢!!
【问题讨论】:
-
以后,请尽量减少您的示例,以说明您的观点。如果您的示例哈希是
filter = { ct: { a: { b: "keep", value: "" }, c: "Exp" }, vision: { a: { b: "keep", value: "" }, c: "Exp" }, tele: { a: { b: "keep", value: "" }, c: "Exp" } },那么这里的问题会更清楚。