module Gorillib::Hashlike::OverrideEnumerable
Overrides the implementation in Enumerable
, which iterates on keys, not key/value pairs
Public Instance Methods
Deletes every key-value pair from hsh
for which block
evaluates to true (similar to Hashlike#delete_if
), but works on (and returns) a copy of the hsh
. Equivalent to hsh.dup.delete_if
.
@example
hsh = { :a => 100, :b => 200, :c => 300 } hsh.reject{|key, val| key.to_s >= "b" } # => { :a => 100 } hsh # => { :a => 100, :b => 200, :c => 300 } hsh = { :a => 100, :b => 200, :c => 300 } hsh.reject{|key, val| key.to_s >= "z" } # => { :a => 100, :b => 200, :c => 300 } hsh # => { :a => 100, :b => 200, :c => 300 }
@overload hsh.reject{|key, val| block } -> new_hashlike
Deletes every key-value pair from +hsh+ for which +block+ evaluates truthy. @return [Hashlike]
@overload hsh.reject -> an_enumerator
with no block, returns a raw enumerator @return [Enumerator]
Overrides the implementation in Enumerable
, which does the keys wrong.
# File lib/gorillib/hashlike.rb, line 686 def reject(&block) return enum_for(:reject) unless block_given? self.dup.delete_if(&block) end
Deletes every key-value pair from hsh
for which block
evaluates to false (similar to Hashlike#keep_if
), but works on (and returns) a copy of the hsh
. Equivalent to hsh.dup.keep_if
.
@example
hsh = { :a => 100, :b => 200, :c => 300 } hsh.select{|key, val| key.to_s >= "b" } # => { :b => 200, :c => 300 } hsh # => { :a => 100, :b => 200, :c => 300 } hsh = { :a => 100, :b => 200, :c => 300 } hsh.select{|key, val| key.to_s >= "z" } # => { } hsh # => { :a => 100, :b => 200, :c => 300 }
@overload hsh.select{|key, val| block } -> new_hashlike
Deletes every key-value pair from +hsh+ for which +block+ evaluates truthy. @return [Hashlike]
@overload hsh.select -> an_enumerator
with no block, returns a raw enumerator @return [Enumerator]
Overrides the implementation in Enumerable
, which does the keys wrong.
# File lib/gorillib/hashlike.rb, line 715 def select(&block) return enum_for(:select) unless block_given? self.dup.keep_if(&block) end