我知道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