繁体   English   中英

否定函数<int, bool>返回相反的布尔值

[英]Negate Func<int, bool> to return opposite bool

我有一个 lambda,它返回一个函数,它否定给定函数的结果,但我就是无法让它工作。

例子:

not(x => x % 2 == 0)(1) --> true  
not(x => x % 2 == 0)(2) --> false

我当前的代码:

Func<Func<int,bool>, Func<int, bool>> not = y => !y;

Func<int, bool> equalTo0 = x => x == 0;

var test3 = not(equalTo0)(5);

例如,这将返回false ,但使用 not lambda 它应该返回true

有没有人对如何改变函数的结果有任何想法/想法?

您正在尝试编写一个接受一个函数并返回另一个函数的 lambda。 返回的函数可以写成另一个 lambda:

// parentheses not necessary, just for clarity 
Func<Func<int,bool>, Func<int, bool>> not = f => (x => !f(x));

f是输入到not的函数,然后返回函数x => !f(x)

这也可以写成通用方法:

Func<T, bool> Not<T>(Func<T, bool> f) => x => !f(x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM