回答
不,C不支持lambda表达式。
如果你愿意使用C++,Boost有一个模拟lambda表达式的库。另外,C++ 0x将内置对lambda表达式的支持。
当时C语言对lambda表达式的支持并不是很大,所以语言不支持它。
不,C没有lambda表达式(或任何其他方式来创建闭包)。
这很可能是因为C是一种低级语言,可以避免性能不佳并且/或者使语言或运行时系统更加复杂的功能。
C不支持lambda表达式,也不支持任何其他方式(在语言标准中)动态创建函数 - 每个标准的所有函数都是在编译时创建的。我想这是因为语言小巧,简单,精简并且速度非常快,几乎不需要任何“运行时库”支持,这对于在操作系统,设备驱动程序,嵌入式应用程序编程中广泛使用的语言至关重要。等等。
Lambda表达式不需要动态创建函数。它只是创建一个引用已编译的(可能是无名的)函数的对象。 – 2010-05-02 00:32:51
@Mike,在C中,你可以通过一个指针来引用现有的函数(的确,函数名称的_mention_“decay”指向它的指针,所以这是非常优雅和可行的)。 – 2010-05-02 00:57:57
我认为迈克有一点。在理论上,你可以用C语言的lambda风格的语法,没有闭包,要在表达式中定义一个像'x => x * x'这样的函数,并且计算一个指向该函数的指针,所有这些都不会破坏你提到的约束。只有当你希望你的lambda访问它的周围范围时,使用一个典型的仅包含代码地址的C函数指针是不可能的。这种上下文无关的功能是否应该被称为“lambdas”,我不知道。 – 2010-05-02 01:10:13
- 1. 使用C++ Lambda表达式
- 2. C++ lambda表达式
- 3. C#Lambda表达式
- 4. 获取有使用C#lambda表达式
- 5. EF4 - C#中使用lambda表达式
- 6. 如何使用此C#lambda表达式
- 7. 是否有angular2的流lambda表达式?
- 8. 在C#中,是否是Lambda表达式对象?
- 9. 在另一个lambda表达式中使用lambda表达式
- 10. 使用Lambda表达式
- 11. 创建C#lambda表达式
- 12. 与C++ 11 lambda表达式
- 13. C#lambda表达式和IComparer
- 14. C#Lambda表达式帮助
- 15. c中的lambda表达式#
- 16. C#:与Lambda表达式
- 17. C#Lambda表达式和NHibernate
- 18. C#Lambda表达式到VB.Net
- 19. 是否有'null'lambda表达式的C#语法?例如,调用OrderBy(x => x)而不使用lambda表达式?
- 20. 如何检查C#lambda表达式是否为“空”?
- 21. 这是lambda表达式吗?
- 22. 什么是lambda表达式?
- 23. 如何在c#中使用lambda表达式检测元素是否存在?
- 24. 使用lambda表达式而不是代表是否是个好主意?
- 25. 组由lambda表达式用C#MVC
- 26. Lambda表达式
- 27. Lambda表达式
- 28. Lambda表达式
- 29. Lambda表达式
- 30. lambda表达式
...爱你。现在我喜欢Stack Overflow,因为这很快! – shosh 2010-05-02 00:50:51