有人可以很好地描述Lambda是什么吗?我们为它们添加了标签,它们位于C#问题的机密上,但是我还没有找到关于它们的含义的良好定义和解释。
有人可以很好地描述Lambda是什么吗?我们为它们添加了标签,它们位于C#问题的机密上,但是我还没有找到关于它们的含义的良好定义和解释。
Answers:
闭包,lambda和匿名函数不一定是同一回事。
匿名函数是没有(或至少不需要)自己名称的任何函数。
闭包是它被宣布时,可以访问其词法作用域是变量的函数,它们已经下降甚至后出的范围。匿名函数不一定必须是闭包,但是它们在大多数语言中都可用,而当不是时,它们的用处就更少了。
就计算机科学而言,lambda的定义不太好。许多语言甚至不使用该术语。相反,他们只会称其为闭包或匿名函数或发明自己的术语。在LISP中,lambda只是一个匿名函数。在Python中,lambda是一个匿名函数,专门限于单个表达式。还有更多,您需要一个命名函数。Lambda是两种语言的闭包。
对先前的回答:
-匿名函数的重要之处在于它们不需要名称。
-封闭是一个独立的概念。
-维基百科上的大量文章没有对此做得更清楚。
这是我的答案,分3部分:
1. lambda是一个函数,它也是一个表达式。这是重要的。
2.许多实现所谓的“ lambda”的语言都添加了一些语法糖,以使编写这些简短函数更加容易和快捷,但这不是必需的。
3.某些语言可能要求lambda 没有副作用。从功能上讲,这将是一个更纯粹的lambda。
当一个函数是一个表达式时,它就是语言中的“头等公民”。我可以用它来做所有重要的事情:
x = lambda(){ return "Hello World"; }
doit( 1, 2, lambda(a,b){ return a > b; }, 3 )
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })( 1, 2 ) // () is valid operator here
摘自维基百科:http : //en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
在诸如Lisp和Python之类的编程语言中,lambda是一种运算符,用于表示使用lambda演算后的匿名函数或闭包。