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
これは機能します。
def discard
self - self.keep &block
end
望ましい行動:
[1, 2, 3].discard { |number| number < 2 }
# => [2, 3]
は、だから私はdiscard
メソッドに渡されたブロック、keep
メソッドに渡されるに合格する必要がありますが、私のような何かをしたいです。これをどのように達成するのですか?
ありがとうございます!私はブロックを通過することなくそれを解決したが、それでもなお何かを学んだ。 – Kappie001
私はこのすべての答えが必要であることに驚いています。もっと複雑な解決が望まれていたように聞こえました。私は公式化しようとし、私は質問を読む元の方法を尋ねる –