【问题标题】:Split a single-pair Hash into its key and value?将单对哈希拆分为其键和值?
【发布时间】:2016-10-27 03:36:20
【问题描述】:

Ruby 是否包含一种方法,可让您获取单对哈希(例如:{:foo => 'bar'})并将键和值分成两个变量?我已经编写了一个小方法来做到这一点,但如果 R​​uby 已经可以做到,我不想变得多余。下面提供了餐巾纸背面代码。

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

用法:

hash = {:foo => 'bar'}
foo, bar = split_hash hash
# Expected: foo = :foo, bar = 'bar'

【问题讨论】:

    标签: ruby


    【解决方案1】:

    你可以这样做

    key, value = hash.first
    

    【讨论】:

    • 这真是太聪明了。谢谢!
    【解决方案2】:

    您可以使用Hash#flatten,它至少从 Ruby v1.9.3 开始就已经存在。与Array#flatten 不同,它不会递归地展平。

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

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

    【讨论】:

    • 拿去吧,@Sergio!当我第一次看到您的答案时,我认为这是唯一简短的答案,但它确实提出了挑战。 (我还是更喜欢你的。)
    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2017-09-03
    • 2019-08-07
    相关资源
    最近更新 更多