Lambda表达式

Asa*_*han 10 c lambda

有人可以向我解释lambda表达式以及它们可以用于什么.我用Google搜索并且有一个粗略的想法.大多数示例都给出了c#代码.普通老C中的lambda表达式怎么样?

el.*_*ado 13

实际上有两个叫做"lambda表达式"的东西,它们相关性很小:

  1. Lambda表达式是lambda演算的基本部分,与函数式编程密切相关

  2. 在命令式语言中,lambda表达式通常是匿名方法的同义词.例如,在C#中,您可以将lambda表达式(即表达式本身,而不仅仅是其结果)作为参数传递:

C#:

someCollection.Apply (x => 2*x); // apply expression to every object in collection
// equivalent to 
someCollection.Apply (delegate (int x) { return 2 * X; });
Run Code Online (Sandbox Code Playgroud)

话虽如此,C不支持匿名方法.但是,您可以使用函数指针来实现类似的结果:

int multiply (int x)
{
    return 2 * x;
}

...
collection_apply (some_collection, multiply);
Run Code Online (Sandbox Code Playgroud)