1

入力をハッシュの値にプッシュする方法は? 私の問題は、複数のキーを取得し、それらすべてが配列を参照していることです。

{"A"=>["C"], "B"=>["E"], "C"=>["D"], "D"=>["B"]}

これらのいずれかに別の文字列をプッシュするにはどうすればよいですか? たとえば"Z"、キーの配列にa を追加したい"A"ですか?

現在、以前の配列を上書きするか、すべてのデータを 1 つにまとめています。

を使用して配列["AB3", "DC2", "FG4", "AC1", "AF4"]をハッシュに変換することについて{"A"=>["B", "C", "F"]}です。

4

3 に答える 3

1

どんなコマンド<<, push, unshiftでも仕事をします

if h["A"] 
  h["A"] << "Z"
else
  h["A"] = ["Z"]
end
于 2012-06-09T16:00:30.637 に答える
0

より良いアプローチ:

以下のように、Hash に新しいクラス メソッドを追加します。

class Hash
  def add (k,v)
    unless self.key?k
      self[k] = [v] 
    else
      self[k] = self[k] << v
    end 
    self
  end 
end


h={}
h.add('A','B') #=> {"A"=>["B"]}
h.add('A','C') #=> {"A"=>["B", "C"]}
h.add('B','X') #=> {"A"=>["B", "C"], "B"=>["X"]}

終わり。

これは、正確な問題に応じて、さらに慣用的なものになる可能性があります。たとえば、一度に複数の値を送信したい場合、コードを DRY して複数の引数を処理できます。

お役に立てれば。

ではごきげんよう。

于 2012-06-09T17:54:19.743 に答える