Method: Weak::Set#reject!

Defined in:
lib/weak/set.rb

#reject! {|element| ... } ⇒ Enumerator, ...

Deletes every live element 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.

deleted, or an `Enumerator` if no block was given.

#see #delete_if

Yields:

  • (element)

    calls the given block once for each live object in ‘self`

Yield Parameters:

  • element (Object)

    the element to check

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


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

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

  deleted_anything = false
  each do |obj|
    deleted_anything = true if yield(obj) && delete?(obj)
  end

  self if deleted_anything
end