什么是lambda(函数)?

什么是lambda(函数)?

对于一个没有计算机科学背景的人来说,在计算机科学的世界里,什么是“羔羊”(Lambda)?



喵喵时光机
浏览 1421回答 3
3回答

四季花海

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);}

达令说

它指的是Lambda微积分,它是一个正式的系统,只有lambda表达式,它表示一个函数作为其唯一的参数并返回一个函数。λ演算中的所有函数都是这类函数,即,λ : λ → λ.LISP使用lambda概念来命名它的匿名函数文本。此lambda表示一个函数,它接受两个参数x和y,并返回它们的乘积:(lambda (x y) (* x y))它可以像下面这样在行中应用(计算值为50):((lambda (x y) (* x y)) 5 10)
打开App,查看更多内容
随时随地看视频慕课网APP