gpt4 book ai didi

ruby - 在 Ruby 中否定谓词 Proc

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:09 24 4
gpt4 key购买 nike

我有一个 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

非常感谢您!

最佳答案

以下方法返回与提供的过程相反的过程。

def negate(procedure)
Proc.new { |*args| !procedure.call(*args) }
end

或者,使用更短的符号:

def negate(procedure)
proc { |*args| !procedure.call(*args) }
end

关于ruby - 在 Ruby 中否定谓词 Proc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com