发一个lambda表达式的例子,一直没有看懂。
delegate T SelfApplicable<T>(SelfApplicable<T> self);
/// <summary>
/// Lambda 表达式 递归测试
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public int Test2(int i)
{
// Y 算子
SelfApplicable<Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>>> Y = y => f => x => f(y(y)(f))(x);
// 不动点
Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>> Fix = Y(Y);
// 高阶函数定义
Func<Func<int, int>, Func<int, int>> F = fac => x => x == 0 ? 1 : x * fac(x - 1);
// 阶乘函数
Func<int, int> factorial = Fix(F);
int r = factorial(i);
Console.WriteLine("{0}的阶乘={1}",i,r);
return r;
}
---------------
感觉lambda表达式很强大啊,但是一直没有看懂
/// <summary>
/// Lambda 表达式 递归测试
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public int Test2(int i)
{
// Y 算子
SelfApplicable<Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>>> Y = y => f => x => f(y(y)(f))(x);
// 不动点
Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>> Fix = Y(Y);
// 高阶函数定义
Func<Func<int, int>, Func<int, int>> F = fac => x => x == 0 ? 1 : x * fac(x - 1);
// 阶乘函数
Func<int, int> factorial = Fix(F);
int r = factorial(i);
Console.WriteLine("{0}的阶乘={1}",i,r);
return r;
}
---------------
感觉lambda表达式很强大啊,但是一直没有看懂
...全文
相关推荐
C++ 中的 Lambda 表达式
#### Lambda表达式的概念Lambda表达式本质上是一种简洁的方式,可以在程序中直接定义一个函数对象。这种函数对象可以在调用位置直接创建并使用,无需显式地定义一个单独的函数。
C# Lambda表达式和查询表达式
**18.1.1 输入参数**Lambda表达式可以没有输入参数,也可以有一个或多个输入参数。**示例18-3**: 当Lambda表达式没有输入参数时。
Java初识Lambda表达式
Lambda表达式可以直接嵌入到方法调用中,无需声明一个完整的类。
python中Lambda表达式详解
"这篇教程详细介绍了Python中的Lambda表达式,解释了其本质和用途,并给出了在网页抓取中使用Lambda表达式与BeautifulSoup库结合的例子。通过Lambda表达式,我们可以创建简
C++ 中lambda表达式的编译器实现原理
在编译时,C++编译器会对Lambda表达式进行一系列处理。以下是一个简单的例子:```cppauto hello = [] () { printf("Hello world!


