为了账号安全,请及时绑定邮箱和手机立即绑定

什么是lambda(函数)?

什么是lambda(函数)?

什么是lambda(函数)?对于一个没有计算机科学背景的人来说,在计算机科学的世界里,什么是“羔羊”(Lambda)?
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

lambda是一种函数类型,定义为内联。除了lambda之外,通常还有某种类型的变量,可以保存对函数lambda或其他函数的引用。

例如,这里有一段C#代码,它不使用lambda:

public Int32 Add(Int32 a, Int32 b){
    return a + b;}public Int32 Sub(Int32 a, Int32 b){
    return a - b;}public delegate Int32 Op(Int32 a, Int32 b);public void Calculator(Int32 a, Int32 b, Op op){
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));}public void Test(){
    Calculator(10, 23, Add);
    Calculator(10, 23, Sub);}

它调用Calculator,传递的不只是两个数字,而是调用Calculator内部的哪种方法来获得计算结果。

在C#2.0中,我们获得了匿名方法,这些方法将上面的代码缩短为:

public delegate Int32 Op(Int32 a, Int32 b);public void Calculator(Int32 a, Int32 b, Op op){
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));}public void Test(){
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a + b;
    });
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a - b;
    });}

然后在C#3.0中,我们得到了lambda,这使得代码更短:

public delegate Int32 Op(Int32 a, Int32 b);public void Calculator(Int32 a, Int32 b, Op op){
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));}public void Test(){
    Calculator(10, 23, (a, b) => a + b);
    Calculator(10, 23, (a, b) => a - b);}


查看完整回答
反对 回复 2019-07-09
?
达令说

TA贡献1821条经验 获得超6个赞

它指的是Lambda微积分,它是一个正式的系统,只有lambda表达式,它表示一个函数作为其唯一的参数并返回一个函数。λ演算中的所有函数都是这类函数,即,λ : λ → λ.

LISP使用lambda概念来命名它的匿名函数文本。此lambda表示一个函数,它接受两个参数x和y,并返回它们的乘积:

(lambda (x y) (* x y))

它可以像下面这样在行中应用(计算值为50):

((lambda (x y) (* x y)) 5 10)


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 1420 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信