将单对Hash拆分为其键和值?

时间:2016-10-26 15:55:52

标签: ruby

Ruby是否包含一个方法,允许您使用单对哈希(例如: SELECT (CASE WHEN Action = 'Action 1' THEN SELECT ---- Date Diff GROUP BY Action 1 ELSE 0 END) 1, (CASE WHEN Action = 'Action 2' THEN SELECT ---- Date Diff GROUP BY Action 2 ELSE 0 END) 2 END) FROM Table )并将键和值分成两个变量?我写了一个小方法来做到这一点,但如果Ruby已经可以做到,我不想多余。下面提供了餐巾纸代码。

{:foo => 'bar'}

用法:

def split_hash hash
    key = hash.keys.first
    key, hash[key]
end

2 个答案:

答案 0 :(得分:5)

你可以这样做

key, value = hash.first

答案 1 :(得分:2)

你可以使用Hash#flatten,这至少是Ruby v1.9.3。与Array#flatten不同,它不会递归展平。

hash = { foo: ['bar', 'boo'] }

foo, bar = hash.flatten
  #=> [:foo, ["bar", "boo"]] 

我遇到过这样的情况,即知道(自Ruby v1.9起)哈希的键将保留其插入顺序是有帮助的。然而,这是不寻常的,因此建议提问者检查他们的代码,以查看不依赖于密钥顺序的设计是否可能更好。