Я знаю о Object#tap
, который принимает значение и возвращает это значение. Но есть ли метод, который принимает блок и возвращает значение, оцениваемое блоком?Есть ли метод ruby, который просто возвращает значение блока?
Чтобы улучшить свой код в this answer (который является более сложным, чем ниже фрагменте кода), я хотел бы изменить
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
Можно ли ставить ` 'A'` ближе к началу, а не ближе к концу? – 2010-12-03 00:18:58