什么是Lambda?
-
02-07-2019 - |
题
有人可以很好地描述Lambda是什么吗?我们有一个标签,他们是C#问题的秘密,但我还没有找到一个很好的定义和解释他们是什么。
解决方案
闭包,lambdas和匿名函数不一定是一回事。
匿名函数是任何没有(或至少需要)自己名字的函数。
一个闭包是一个函数,它可以在声明它的词法范围时访问变量,即使在它们已经 out 范围之后也是如此。匿名函数不一定必须是闭包,但是它们在大多数语言中都会变得不那么有用。
就计算机科学而言,一个lambda是不太明确的定义。许多语言甚至没有使用这个术语;相反,他们只会称他们为封闭或匿名功能,或者发明他们自己的术语。在LISP中,lambda只是一个匿名函数。在Python中,lambda是一个匿名函数,专门限于单个表达式;更多,你需要一个命名的功能。 Lambda是两种语言的闭包。
其他提示
也称为闭包或匿名函数.. 我在此处找到了最佳说明。基本上,内联代码块可以作为参数传递给函数。
" LAMBDA"是指 Lambda Calculus 或特定的lambda表达式。 Lambda演算基本上是逻辑和数学的一个分支,处理函数,是函数式编程语言的基础一>
~William Riley-Land
它只是一个内联声明的匿名函数,当你不想编写一个完整的函数时,通常会将其分配给一个委托。
在像lisp / scheme这样的语言中,它们经常作为函数参数非常自由地传递,但是C#中的习惯用法通常只能找到lambdas,用于懒惰的函数评估,如linq,或用于制作事件处理代码bit terser。
编程中没有“lambda”这样的东西。这取决于语言等。
简而言之,通常一种“有lambdas”的语言将这个术语用于匿名函数,或者在某些情况下使用闭包。就像这样,在Ruby中:
f = lambda { return "this is a function with no name" }
puts f.call
回应之前的答案:
- 匿名函数的重要之处并不在于它们不需要名称。
-Closures是一个单独的概念。
- 一篇巨大的维基百科文章并没有让这更清楚。
以下是我的答案分为3部分:
1. lambda是一个函数,也是一个表达式。这是重要的事情。
2.许多实现所谓“lambdas”的语言。添加一些语法糖可以更轻松,更快地编写这些简短的函数,但这不是必需的。
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演算后的匿名函数或闭包。