【发布时间】:2011-10-30 05:25:41
【问题描述】:
我想检查一个哈希是否有一个包含一些文本的键。它可能不是确切的密钥,但密钥必须包含(如.include?)文本。我的解决方案是:
some_hash.select {|k,v| k.include? "foo"}.empty?
但这会再产生一个哈希值。我只想检查密钥的存在。有没有更好的方法来做到这一点?
【问题讨论】:
我想检查一个哈希是否有一个包含一些文本的键。它可能不是确切的密钥,但密钥必须包含(如.include?)文本。我的解决方案是:
some_hash.select {|k,v| k.include? "foo"}.empty?
但这会再产生一个哈希值。我只想检查密钥的存在。有没有更好的方法来做到这一点?
【问题讨论】:
这样会好一点:
some_hash.any? {|k, v| k.include? "foo"}
(对我来说,这读作 “哈希是否有任何包含 'foo' 的键?”)
或者,这可能效率较低,但实际上效率更高(参见 cmets),并且可能更具可读性:
some_hash.keys.any? {|k| k.include? "foo"}
【讨论】:
select 代替any?。
some_hash.keys.any? {|k| k.include? 'foo' }
【讨论】:
some_hash.any? {|k,v| k.include? "foo"}
【讨论】: