什么是Lambda?
有人能够很好地描述Lambda是什么吗? 我们有一个标签,他们在C#问题的秘密,但我还没有find一个很好的定义和解释,他们是在什么位置。
闭包,lambdas和匿名函数不一定是一回事。
匿名函数是没有(或者至less需要)自己的名字的任何函数。
闭包是一个函数,它可以访问在声明时处于其词汇范围内的variables,即使在它们超出范围之后。 匿名函数不一定是封闭的,但是它们是大多数语言的,当它们不是时,它们的用处就变得不那么有用了。
对于计算机科学来说,拉姆达(lambda)是不太清楚的。 很多语言甚至不使用这个术语; 相反,他们会把它们叫做封闭或匿名function,或者发明自己的术语。 在LISP中,lambda只是一个匿名函数。 在Python中,lambda是一个匿名函数,特别限于单个expression式; 更多的东西,你需要一个命名的function。 兰姆达斯是两种语言的closures。
也被称为闭包或匿名函数..我在这里find最好的描述。 基本上,可以作为parameter passing给函数的内联代码块。
“Lambda”是指Lambda微积分或特定的lambdaexpression式。 Lambda演算基本上是处理函数的逻辑和math的一个分支,是函数式编程语言的基础。
〜William Riley-Land
这只是一个内联的匿名函数,当你不想编写一个完整的函数时,最通常的代码是分配给一个委托。
在像Lisp / Scheme这样的语言中,它们通常被作为函数参数非常自由地传递,但是C#中的习惯用法通常只用于函数的懒惰评估,就像在linq中一样,或者用于使事件处理代码变得简单一些。
编程中并不是真正的“lambda”。 这取决于语言等
简而言之,通常一种“有lambda”的语言使用匿名函数或在某些情况下closures这个词。 就像这样,在Ruby中:
f = lambda { return "this is a function with no name" } puts f.call
针对之前的答案:
– 匿名函数的重要性不在于它们不需要名称。
– shell是一个单独的概念。
– 一个巨大的维基百科文章没有使这个更清晰。
这是我的答案在三个部分:
1. lambda是一个也是expression式的函数。 这是重要的事情。
2.实现所谓的“lambda”的许多语言增加了一些语法糖 ,使得这些简短的函数更容易,更快速地写入,但这不是必需的。
3.有些语言可能要求lambda 没有副作用 。 这将是一个更纯粹的lambda在function意义上。
当一个函数是一个expression式时,它就是这个语言中的“头等公民”。 我可以用它做所有重要的事情:
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微积分的用法。