3

2つのハッシュがある場合、最初のハッシュの値を2番目のハッシュにもあるキーに置き換えようとしています。具体的には、次の2つのハッシュがあります。

data = {
  "study"       => "Lucid Study",
  "name"        => "Lucid Plan",
  "studyWillBe" => "Combination"
}

conditions = { "study" => "((current))" }

dataそのキーを持っているので、その"study"キーを更新してもらいたいですconditions。私はdataこのようになりたい:

data = {
  "study"       => "((current))",
  "name"        => "Lucid Plan",
  "studyWillBe" => "Combination"
}

私はここまで来ました:

data = Hash[data.map {|k, v| [conditions[k] || k, v] }]

しかし、それはうまくいきません。誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

4

あなたはこれを行うことができます

data.each {|k, v| data[k] = conditions[k] if conditions[k]}

于 2012-11-19T16:09:42.367 に答える
2

メソッドmergeは、新しい値を割り当てるだけでなく、特定の操作を行うことができるブロックを取ることができます

data.merge(conditions) do |key, oldvalue, newvalue|
  newvalue
end    
=> {"study"=>"((current))", "name"=>"Lucid Plan", "studyWillBe"=>"Combination"}
于 2012-11-19T18:40:03.810 に答える
2

これはマージと呼ばれます。

data = {"study"=>"Lucid Study", "name"=>"Lucid Plan", "studyWillBe"=>"Combination"}
conditions = {"study"=>"((current))"}

data.merge(conditions)
#{"study"=>"((current))", "name"=>"Lucid Plan", "studyWillBe"=>"Combination"}
于 2012-11-19T16:16:46.617 に答える