class Array
def select! # :yield: x
def select! # :yield: x i = 0 each_with_index { |x, j| yield x or next self[i] = x if i != j i += 1 } return nil if i == size self[i..-1] = [] self end unless method_defined?(:select!)
def sort_by!(&block) # :yield: x
def sort_by!(&block) # :yield: x replace(sort_by(&block)) end unless method_defined?(:sort_by!)