c - lambda 表达式

标签 c lambda

谁能给我解释一下 lambda 表达式及其用途。我已经用谷歌搜索并有了一个大概的想法。大多数示例都提供了 C# 代码。简单的旧 C 中的 lambda 表达式如何...?

最佳答案

实际上有两种叫做“lambda 表达式”的东西,它们之间的关系相当松散:

  1. Lambda 表达式是 lambda calculus 的基础部分与函数式编程密切相关

  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; });

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

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

...
collection_apply (some_collection, multiply);

关于c - lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694756/

相关文章:

c++ - 为什么父/子进程中的对象具有相同的地址?

c - 调用 linux splice() 时参数无效

c++ - 在 lambda 中捕获完美转发的变量

c - 如何从二进制文件中计算相同的产品并列出它们的编号?

c - 省略 printf 会导致错误答案

java - 在 Java 中将任何方法作为参数传递的功能接口(interface)

java - lambda 表达式在 netbeans jdk 1.8 项目中不起作用

C++11 Lambda 模板推断

lambda - 组合对特定类型的任意对象的实例方法的引用

c - 头文件中的内联与静态内联