运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Ruby hash:返回第一个不是nil的键值

运维开发网 https://www.qedev.com 2020-08-13 10:50 出处:网络 作者:运维开发网整理
说我有哈希 hash = {a:1, b:false, c:nil} &安培;某处的一系列键:[:c,:b,:a].是否有一个Ruby习惯用于返回这样一个键值!= nil? obv [:c, :b, :a].select {|key| hash[key] != nil}.first # returns :b 似乎太长了. 为此,我认为 Enumerable#find可能有效: find(i
说我有哈希

hash = {a:1, b:false, c:nil}

&安培;某处的一系列键:[:c,:b,:a].是否有一个Ruby习惯用于返回这样一个键值!= nil?

obv

[:c, :b, :a].select {|key| hash[key] != nil}.first     # returns :b

似乎太长了.

为此,我认为 Enumerable#find可能有效:

find(ifnone = nil) { |obj| block } → obj or nil
find(ifnone = nil) → an_enumerator

Passes each entry in enum to block. Returns the first for which block

is not false. If no object matches, calls ifnone and returns its

result when it is specified, or returns nil otherwise.

If no block is given, an enumerator is returned instead.

在你的情况下,它将返回第一个块不是nil:

p %i[c b a].find { |key| !{ a: 1, b: nil, c: nil }[key].nil? } # :a
p %i[c b a].find { |key| !{ a: 1, b: 1, c: nil }[key].nil? }   # :b

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消