有人可以很好地描述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演算后的匿名函数或闭包。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top