从哈希中提取键值的简便方法

时间:2013-11-18 11:01:36

标签: ruby

是否有一些很好的方法从哈希中提取键和值?

我的第一个方法是:

a = {:a => :b}
a.keys.first   # => :a
a.values.first # => :b

但它看起来有点笨拙,所以我提出了这个:

 k, v = {:a => :b}.to_a.flatten
 k # => :a
 v # => :b

还有其他方法吗?

3 个答案:

答案 0 :(得分:4)

k, v = {a: :b}.first
k # => :a
v # => :b

答案 1 :(得分:2)

以下是另外两种方法,但我认为它们并不比sawa的答案更好:

key, val =  *a.flatten
key, val =  [*a][0]

或者,如果您不再关心原始哈希值:

key, val =  a.shift

答案 2 :(得分:1)

这里有更多,但是和hirolau一样,我认为这不比sawa的答案好。

each_paireach以及更多方法,返回Enumerator个对象。有了这个,您可以使用next获得next值:

h.each_pair.next
# [:a, :b]
h.each.next
# => [:a, :b]

并且entries返回数组数组:

 a, b = h.entries[0]

或其他方式,使用ruby的模式匹配

((a,b)) = h.entries