0

我有一个 YAML 文件,我用它来播种一些 Ruby on Rails 模型。我使用YAML.load(filename). 在创建 RoR 模型之前,某些键需要进行一些后期处理,例如,需要从文件名打开文件。

我想从散列中提取两个值到变量中,使散列不存在这些值。

在 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 回答