Maintenance Ruby 3.3 gets fixes, but no new features. Switch to Ruby 4.0 →
instance method
Hash#any?
hash.any? → true or false
hash.any?(object) → true or false
hash.any? {|key, value| ... } → true or false
hash.c
View on GitHub ↗
static VALUE
rb_hash_any_p(int argc, VALUE *argv, VALUE hash)
{
VALUE args[2];
args[0] = Qfalse;
rb_check_arity(argc, 0, 1);
if (RHASH_EMPTY_P(hash)) return Qfalse;
if (argc) {
if (rb_block_given_p()) {
rb_warn("given block not used");
}
args[1] = argv[0];
rb_hash_foreach(hash, any_p_i_pattern, (VALUE)args);
}
else {
if (!rb_block_given_p()) {
/* yields pairs, never false */
return Qtrue;
}
if (rb_block_pair_yield_optimizable())
rb_hash_foreach(hash, any_p_i_fast, (VALUE)args);
else
rb_hash_foreach(hash, any_p_i, (VALUE)args);
}
return args[0];
}
Returns true if any element satisfies a given criterion; false otherwise.
If self has no element, returns false and argument or block are not used.
With no argument and no block, returns true if self is non-empty; false if empty.
With argument object and no block, returns true if for any key key h.assoc(key) == object:
Example
h = {foo: 0, bar: 1, baz: 2} h.any?([:bar, 1]) # => true h.any?([:bar, 0]) # => false h.any?([:baz, 1]) # => false
With no argument and a block, calls the block with each key-value pair; returns true if the block returns any truthy value, false otherwise:
Example
h = {foo: 0, bar: 1, baz: 2} h.any? {|key, value| value < 3 } # => true h.any? {|key, value| value > 3 } # => false
Related: Enumerable#any?