delegates - 你能解释一下 lambda 表达式吗?

标签 delegates lambda closures imperative-languages

这个问题在这里已经有了答案:





What is a Lambda?

(7 个回答)



C# Lambda expressions: Why should I use them?

(15 个回答)


1年前关闭。




我并没有真正得到 lambda 表达式。虽然它们从 ALGOL 时代就已经存在,但直到最近 Python 和 Ruby 变得非常流行时,我才开始听说它们。现在 C# 有 =>语法,我的世界(.NET)中的人们越来越多地谈论 lamdba 表达式。

我已阅读有关 lambda 演算的 Wikipedia 文章,但我并不是真正的数学专家。从实际的角度来看,我并没有真正理解它。我什么时候使用 lambda 表达式?为什么?我怎么知道这是我应该做的?

您能否以前后格式展示如何解决 lambda 表达式问题的示例?任何命令式语言都可以,但 C# 对我来说最容易理解。

最佳答案

基本上就 C# 而言,lambda 表达式是一种创建委托(delegate)(或表达式树,但我们暂时将其放在一边)的简单方法。

在 C# 1 中,我们只能从普通方法创建委托(delegate)实例。
在 C# 2 中,我们获得了匿名方法。
在 C# 3 中,我们获得了 lambda 表达式,它类似于更简洁的匿名方法。

当你想表达一些接受一个值并返回一个值的逻辑时,它们特别简洁。例如,在 LINQ 的上下文中:

                       // Only include children - a predicate
var query = dataSource.Where(person => person.Age < 18) 
                       // Transform to sequence of names - a projection
                      .Select(person => person.Name);

my article on closures 中有更全面的讨论 - 以及其他方面。 .

关于delegates - 你能解释一下 lambda 表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187414/

相关文章:

python - sorted(key=lambda : . ..) 后面的语法

c++ - 传递给多参数 lambda 表达式的参数

php - JavaScript "call on declare"在 PHP 中等效的匿名函数?

javascript - 使用 jQuery 的 each() 在 JavaScript 中更清晰(嵌套)的闭包

c# - 如何将委托(delegate)传递给另一个类

design-patterns - Groovy 中@Delegate、@Mixin 和 Traits 的区别?

ios - 如何使用协议(protocol)在两个 View Controller 之间传递值

Scala 编译器无法在 Spark lambda 函数中推断类型

c# - 访问修改后的闭包,这是 ReSharper 错误吗?

ios - SWRevealViewController 在目标 ViewController 上设置委托(delegate)