0

RubyonRailsモデルのシードに使用しているYAMLファイルがあります。を使用してこれをロードしYAML.load(filename)ます。一部のキーは、RoRモデルを作成する前に後処理が必要です。たとえば、ファイルはファイル名から開く必要があります。

ハッシュから2つの値を変数に抽出し、これらの値が存在しないハッシュを残したいと思います。

Rubyでこれを行う最も慣用的な方法は何ですか?

編集:

私はやってみました:

value1 = hash.delete(:key1)
value2 = hash.delete(:key2)

これで問題はありませんvalue1が、value2ハッシュは変更されません。

4

2 に答える 2

1

列挙子を使用して、ハッシュを元のエンティティに保持したまま、ハッシュから各値を抽出する方法について説明します。

hash = { :key1 => value1, :key2 => value2 }

# Iterates over values
hash.each_value {|val| print val}

または別の代替手段:

print hash.shift[1] while not hash.empty?

通常、deleteメソッドは指定されたキーをハッシュから削除し、削除された値を返します。

hash.delete (:key1) # => returns the deleted value. Now the hash should contain {:key2=>value2}
于 2013-01-03T20:32:48.730 に答える
0

によって生成されるハッシュYAML.loadは、記号キーではなく文字列キーを使用します。シンボルキーを使用して削除しようとしたので、何も削除されませんでした。

于 2013-01-03T21:22:47.607 に答える