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
答案 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起)哈希的键将保留其插入顺序是有帮助的。然而,这是不寻常的,因此建议提问者检查他们的代码,以查看不依赖于密钥顺序的设计是否可能更好。