gpt4 book ai didi

ruby-on-rails - Hash#slice 类方法,如果给定键不存在则返回 nil

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:50 25 4
gpt4 key购买 nike

我在我的 Rails 环境中使用 Hash#slice 方法。

slice 方法的工作原理如下:

{ a: 1, b: 2, d: 4 }.slice(:a, :c, :d)
=> {:a=>1, :d=>4}

但是如果给定的键不存在,我想返回一个nil,像这样:

{ a: 1, b: 2, d: 4 }.slice(:a, :c, :d)
=> {:a=>1, :c=>nil, :d=>4}

这是我为函数写的,有没有更好的方法来写这个函数?

hash = {a: 1, b: 2, d: 4}
keys = [:a, :c, :d]
keys_not_present = keys.map { |key| key unless hash.has_key?(key) }.compact
keys_not_present = keys_not_present.zip([nil]*keys_not_present.size).to_h
hash.slice(*keys).merge(keys_not_present)

不关心散列的顺序。

最佳答案

我会使用您感兴趣的术语的reduce:

hash = {a: 1, b: 2, d: 4}
[:a, :c, :d].reduce({}) {|h, k| h[k] = hash[k]; h }

关于ruby-on-rails - Hash#slice 类方法,如果给定键不存在则返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com