gpt4 book ai didi

c# - 将 Func 转换为 Func

转载 作者:可可西里 更新时间:2023-11-01 08:07:09 25 4
gpt4 key购买 nike

我想我的思绪正在爆炸,试图弄清楚 Funcs...如果这没有意义,我道歉,现在对我来说很有意义,但已经度过了漫长的一天......

1) 假设给你一个函数,它接受 T 并输出一个字符串:

 Func<T, string> 

您能否将其转换为接受 T 并根据某种逻辑返回 bool 值的函数(在这种情况下,如果返回的字符串为空 (String.IsNullOrWhiteSpace)?

 Func<T, bool> 

2) 如果给你一个,你能做同样的事情吗

Expression<Func<T, string>>

并需要将其转换为

Func<T, bool>

根据返回的字符串是否为空 (String.IsNullOrWhiteSpace) 返回 true/false?

谢谢

最佳答案

对于第一部分,您甚至可以创建一些“高阶”函数:



Func<A,C> MapFun<A,B,C>(Func<A,B> input, Func<B,C> transf)
{
return a => transf(input(a));
}

使用



Func <T,string> test = ...
var result = MapFun(test, String.IsNullOrWhiteSpace);

(我希望 C# 类型类型推断在这里起作用)

如果你将它定义为 Func 的扩展,它会变得更容易:


public static class FuncExtension
{
public static Func<A,C> ComposeWith<A,B,C>(this Func<A,B> input, Func<B,C> f)
{
return a => f(input(a));
}
}

这是一个非常简单的测试:


Func<int, string> test = i => i.ToString();
var result = test.ComposeWith(string.IsNullOrEmpty);

对于第二个:我认为您可以将表达式编译成“真正的”Func,然后使用上面的代码。 see MSDN Docs on Expression.Compile

PS:重命名函数以更好地匹配它的意图(它是函数组合)

关于c# - 将 Func<T, String> 转换为 Func<T, bool>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138182/

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