a = (1..5).select(&:even?).map do |s|
s * 2
end
a #=> [4, 8]
在Ruby中,我想将a
的右侧表达式重构为方法及其块参数。重构一个将块带入方法及其块参数的表达式
def refactor
(1..5).select(&:even?).map { |e| yield e }
end
def refactor2(&block)
(1..5).select(&:even?).map(&block)
end
b = refactor do |s|
s * 2
end
b #=> [4, 8]
使用refactor
或refactor2
,我能得到我想要的东西。
但包装yield
与块 或块和proc之间来回不觉得对我来说是正确的。
有没有更简洁的方法?
这完全取决于用例。我的直觉说,这个方法应该返回一个枚举器(如果你想做一些除map之外的事情呢?),但是我不明白你的问题的目的是什么。 – Max