3

私は述語であるProcを持っています。

Proc.new { |number| number.even? }

どういうわけか反対の意味を持つ別の Proc を作成する方法はありますか? Proc は関数パラメーターとして提供されるため、Proc の「本体」を変更することはできません。だから私はこのようなものが欲しい:

not(Proc.new { |number| number.even? }
# which of course doesn't work :(

そして、私はそれが同じことをしたい

Proc.new { |number| number.odd? }

アイデアは、次のような関数が必要だということです:

def negate(proc)
  negated proc with meaning opposite of this of proc
end

事前にどうもありがとうございました!

4

2 に答える 2

1

これはまったく役に立ちますか?

p = Proc.new { |number| number.even? }
p.call(1) #=> false
!p.call(1) #=> true
于 2013-11-04T12:09:14.677 に答える