我想知道如何使用lambda表达式进行函数组合。 我的意思是,我有2个函数f(x)和g(x)。如何使用lambda表达式来组合f(g(x))? 感谢lambda表达式c#
2
A
回答
2
通用版本:
static Func<T, T> Compose<T>(params Func<T, T>[] ff)
{
Func<T, T> id = x => x;
foreach (var f in ff)
{
var i = f;
var idd = id;
id = x => i(idd(x));
}
return id;
}
由于C#的缺乏适当的词汇范围,我们需要一大堆不同的名字临时变量。
2
Func<int, int> f = x => x + 1;
Func<int, int> g = x => x * 2;
Func<int, int> fg = x => f(g(x));
Console.WriteLine(fg(5));
2
你的问题很简单,我不知道如果我很好,但是我觉得这是你所需要的:
Func<int,int> compose(Func<int,int> f, Func<int,int> g)
{
return x=>f(g(x));
}
var fg = compose(f,g);
Func<int,int> f = ....
Func<int,int> g = ....
Func<int,int> fg = compose(f,g);
与C#的问题是,你需要为每个不同的方法签名编写这样的组合函数,因此您无法使用通用方法编写函数。
+0
谢谢大家,这就是我正在寻找的 –
相关问题
- 1. C#Lambda表达式
- 2. C++ lambda表达式
- 3. C#表达式Lambda
- 4. 与C++ 11 lambda表达式
- 5. C++ std :: find lambda表达式
- 6. C++ lambda表达式帮助
- 7. C#:与Lambda表达式
- 8. C#Lambda表达式和NHibernate
- 9. 创建C#lambda表达式
- 10. C++与lambda表达式
- 11. C#Lambda表达式到VB.Net
- 12. 在C++ lambda表达式
- 13. 了解C#Lambda表达式
- 14. vb.net vs C#lambda表达式
- 15. 使用C++ Lambda表达式
- 16. c中的lambda表达式#
- 17. C#lambda表达式和IComparer
- 18. C#Lambda表达式帮助
- 19. Lambda表达式
- 20. Lambda表达式
- 21. Lambda表达式
- 22. Lambda表达式
- 23. Lambda表达式
- 24. Lambda表达式
- 25. Lambda表达式
- 26. Lambda表达式
- 27. Lambda表达式
- 28. lambda表达式
- 29. Lambda表达式()
- 30. lambda表达式
你不需要这个表达式。普通代表就够了。 – leppie
请注意,“lambda表达式”仅仅是代码 - 它并没有告诉我们这是成为委托还是表达式树。所示的两个答案是针对代表的;如果它实际上是一个表达树,请说。 –