【发布时间】:2014-01-05 21:04:57
【问题描述】:
我正在尝试编写 ruby keep_if 和 delete_if 数组方法的克隆。这是我的代码。
module Strain
def keep
self.inject([]) do |extracts, element|
yield(element) ? extracts << element : extracts
end
end
def discard
self.inject([]) do |extracts, element|
!yield(element) ? extracts << element : extracts
end
end
end
class Array
include Strain
end
这行得通。但我想做这样的事情:
def discard
self - self.keep &block
end
期望的行为:
[1, 2, 3].discard { |number| number < 2 }
# => [2, 3]
所以我需要将传递给discard 方法的块传递给keep 方法。我如何做到这一点?
【问题讨论】: