你知道一个漂亮的ruby方法来查找散列是否有某些键?
h = {:a => 1, :c => 3, :d => 4}
# keys to find are :a, :b or :e
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个:
h.key?(:a) || h.key?(:b) || h.key?(:e)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更漂亮的方法来做到这一点!:)
非常感谢 !
小智 37
[:a, :b, :e].any? {|k| h.key?(k)}
Run Code Online (Sandbox Code Playgroud)
来自IRB:
>> h = {:a => 1}; [:x].any? {|k| h.key?(k)}
=> false
>> h = {:a => 1}; [:x, :a].any? {|k| h.key?(k)}
=> true
快乐的编码.
Wes*_*Wes 13
以下是从数组中获取所有匹配键的方法:
> {:a => 1, :c => 3, :d => 4}.keys & [:a, :d, :e]
=> [:a, :d]
Run Code Online (Sandbox Code Playgroud)
如果你想要一个布尔值(遵循安德鲁的建议):
> ({:a => 1, :c => 3, :d => 4}.keys & [:a, :d, :e]).empty?
=> false
> ({:a => 1, :c => 3, :d => 4}.keys & [:f, :e]).empty?
=> true
Run Code Online (Sandbox Code Playgroud)