Я знаю о Object#tap
, который принимает значение и возвращает это значение.Но есть ли метод, который принимает блок и возвращает значение, оцененное блоком?
Чтобы улучшить мой код в этот ответ (что более сложно, чем приведенный ниже фрагмент), я 'я хотел бы изменить
deck.index("A").tap {|index|
STDERR.puts "Result of indexing for #{"A".inspect} is #{index.inspect}"
}
, который повторяется "A"
, на
def my_method(*args)
yield *args
end
deck = ['A', 'B', 'C']
my_method("A") {|value| deck.index(value).tap {|index|
STDERR.puts "Result of indexing for #{value.inspect} is #{index.inspect}"
} }
# Result of indexing for "A" is 0
# => 0