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

10 浏览
0 Comments

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

这个问题已经有了答案 :

Lambda是什么?

C# Lambda表达式:为什么我要使用它们?

我真的不理解lambda表达式,虽然它们已经存在于ALGOL的时代,但是直到Python和Ruby变得非常流行时,我才开始听到它们。现在,由于C#有了=>语法,我所在的世界(.NET)的人们越来越多地谈论lambda表达式。

我读了lambda演算的维基百科上的文章,但我不是一个数学家。从实际角度来说,我并不真正理解它。我什么时候应该使用lambda表达式?为什么?如何知道我应该这样做?

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

admin 更改状态以发布 2023年5月23日
0
0 Comments

lambda函数就是匿名函数。

例如,在python中,您想要将列表中的所有元素加倍。基本上有三种方法可以实现:

列表表达式:

[2*x for x in list]

显式函数:

def double(x):
    return 2*x
map(double, list) # iirc

使用lambda:

double = lambda x : 2*x
map(double, list)

因此,在大多数语言中,lambda只是避免创建新函数的语法开销的一种方式。

0
0 Comments

就 C# 而言,Lambda 表达式是创建委托(或表达式树,不过现在先不谈这些)的一种简便方法。

C# 1 中我们只能从普通方法中创建委托实例。

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

有一个更详细的讨论 - 以及其他方面 - 在我的闭包文章中。

0