11
我正在尝试编写ruby的副本keep_if
和delete_if
数组方法。这是我的代码。将传递给方法的块传递给Ruby中的另一个方法
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
This works。但我想要做的事,如:
def discard
self - self.keep &block
end
期望的行为:
[1, 2, 3].discard { |number| number < 2 }
# => [2, 3]
所以我需要通过传递给discard
方法块,到keep
方法传递。我如何实现这一目标?
谢谢!我最终解决了这个问题,但没有通过这个街区,但我仍然学到了一些东西。 – Kappie001
我很惊讶,这是所有需要的答案。听起来像是想要一个更复杂的解决方案。我会试着制定和问我原来阅读这个问题的方式 –