index(*args)
public
The index method is specialized to return
the index as [row, column] It also accepts
an optional selector argument, see #each for details.
Matrix[ [1,2], [3,4] ].index(&:even?)
Matrix[ [1,1], [1,1] ].index(1, :strict_lower)
Show source
def index(*args)
raise ArgumentError, "wrong number of arguments(#{args.size} for 0-2)" if args.size > 2
which = (args.size == 2 || SELECTORS.include?(args.last)) ? args.pop : :all
return to_enum :find_index, which, *args unless block_given? || args.size == 1
if args.size == 1
value = args.first
each_with_index(which) do |e, row_index, col_index|
return row_index, col_index if e == value
end
else
each_with_index(which) do |e, row_index, col_index|
return row_index, col_index if yield e
end
end
nil
end