Method: Weak::Map#select!

Defined in:
lib/weak/map.rb

#select! {|key, value| ... } ⇒ Enumerator, ... Also known as: filter!

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

Equivalent to #keep_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

  • value (Object)

    the corresponding value

Returns:

  • (Enumerator, self, nil)

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

See Also:



656
657
658
659
660
661
662
663
664
665
666
667
668
# File 'lib/weak/map.rb', line 656

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

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

    delete(key)
    deleted_anything = true
  end

  self if deleted_anything
end