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
我很驚訝,這是所有需要的答案。聽起來像是想要一個更復雜的解決方案。我會試着制定和問我原來閱讀這個問題的方式 –