对于一个没有计算机科学背景的人来说,计算机科学界的lambda是什么?
当前回答
它是一个没有名称的函数。例如,在c#中,您可以使用
numberCollection.GetMatchingItems<int>(number => number > 5);
返回大于5的数字。
number => number > 5
这里是lambda部分。它表示一个接受参数(数字)并返回布尔值(数字>5)的函数。GetMatchingItems方法对集合中的所有项使用此lambda并返回匹配项。
其他回答
它指的是lambda演算,这是一个只有lambda表达式的形式系统,lambda表达式表示一个函数,该函数将一个函数作为其唯一参数并返回一个函数。lambda演算中的所有函数都是这种类型的,即λ:λ→ λ.
Lisp使用lambda概念来命名其匿名函数文字。此lambda表示一个函数,它接受两个参数x和y,并返回它们的乘积:
(lambda (x y) (* x y))
它可以这样在线应用(计算为50):
((lambda (x y) (* x y)) 5 10)
这个问题已经得到了正式的回答,因此我不会试图对此做更多的补充。
对于一个对数学或编程知之甚少或一无所知的人来说,用非常简单、非正式的话来说,我会把它解释为一个小的“机器”或“盒子”,它接受一些输入,产生一些工作,产生一些输出,没有特定的名称,但我们知道它在哪里,就凭这些知识,我们使用它。
实际上,对于一个知道函数是什么的人来说,我会告诉他们这是一个没有名字的函数,通常放在内存中的一个点上,只需引用该内存即可使用(通常通过使用一个变量-如果他们听说过函数指针的概念,我会将其用作类似的概念)-这个答案涵盖了非常基本的内容(没有提到闭包等),但人们可以很容易地理解这一点。
我喜欢这篇文章中对Lambdas的解释:LINQ的演变及其对C#设计的影响。这对我来说很有意义,因为它为Lambdas展示了一个真实的世界,并将其作为一个实际的例子。
他们的快速解释:Lambdas是将代码(函数)视为数据的一种方式。
Ruby中lambda的示例如下:
hello = lambda do
puts('Hello')
puts('I am inside a proc')
end
hello.call
将生成以下输出:
Hello
I am inside a proc
你可以把它看作一个匿名函数-这里有更多信息:Wikipedia-匿名函数
推荐文章
- 设计模式:工厂vs工厂方法vs抽象工厂
- 为什么处理排序数组比未排序数组慢?
- 构造函数何时抛出异常是正确的?
- 什么是“一级”对象?
- 什么时候应该使用Debug.Assert()?
- 为什么浮点数不准确?
- 什么是端点?
- 字符、码位、字形和字素之间的区别是什么?
- 使用'key'和lambda表达式的Python Max函数
- IOException:进程不能访问文件“文件路径”,因为它正在被另一个进程使用
- 地图和字典的区别是什么?
- “函数”和“过程”的区别是什么?
- 如何使用Java8 lambda对流进行反向排序?
- 跳跃表vs.二叉搜索树
- Kotlin中的' forEach '中的' break '和' continue '