Method: Weak::Map#reject!

Defined in:
lib/weak/map.rb

#reject! {|key, value| ... } ⇒ Enumerator, ...

Deletes every key-value pair from self for which the given block evaluates to a truethy value.

Equivalent to #delete_if, but returns nil if no changes were made.

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

Yields:

  • (key, value)

    calls the given block once for each key in the map

Yield Parameters:

  • key (Object)

    a key

Returns:

  • (Enumerator, self, nil)

    self if a block was given and some element(s) were deleted, nil if a block was given but no keys were deleted, or an Enumerator if no block was given.

See Also:



612
613
614
615
616
617
618
619
620
621
622
623
624
# File 'lib/weak/map.rb', line 612

def reject!(&block)
  return enum_for(__method__) { size } unless block_given?

  deleted_anything = false
  each do |key, value|
    next unless yield(key, value)

    delete(key)
    deleted_anything = true
  end

  self if deleted_anything
end