栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是lambda(函数)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是lambda(函数)?

Lambda来自Lambda微积分,是指编程中的匿名函数。

为什么这很酷?它允许您编写快速抛出的函数而无需命名它们。它还提供了写闭包的好方法。有了这种能力,您就可以做这样的事情。

Python

def adder(x):    return lambda y: x + yadd5 = adder(5)add5(1)6

从Python片段中可以看到,函数加法器接受一个参数x,并返回一个匿名函数(即lambda),该函数接受另一个参数y。该匿名函数使您可以从函数创建函数。这是一个简单的示例,但是它应该传达出lambda和闭包所具有的功能。

其他语言的例子

Perl 5

sub adder {    my ($x) = @_;    return sub {        my ($y) = @_;        $x + $y    }}my $add5 = adder(5);print &$add5(1) == 6 ? "okn" : "not okn";

Javascript

var adder = function (x) {    return function (y) {        return x + y;    };};add5 = adder(5);add5(1) == 6

Javascript(ES6)

const adder = x => y => x + y;add5 = adder(5);add5(1) == 6

方案

(define adder    (lambda (x)        (lambda (y)(+ x y))))(define add5    (adder 5))(add5 1)6

C#3.5或更高

Func<int, Func<int, int>> adder =     (int x) => (int y) => x + y; // `int` declarations optionalFunc<int, int> add5 = adder(5);var add6 = adder(6); // Using implicit typingDebug.Assert(add5(1) == 6);Debug.Assert(add6(-1) == 5);// Closure exampleint yEnclosed = 1;Func<int, int> addWithClosure =     (x) => x + yEnclosed;Debug.Assert(addWithClosure(2) == 3);

Swift

func adder(x: Int) -> (Int) -> Int{   return { y in x + y }}let add5 = adder(5)add5(1)6

PHP

$a = 1;$b = 2;$lambda = fn () => $a + $b;echo $lambda();

Haskell

(x y -> x + y) 

Java看到这篇文章

// The following is an example of Predicate : // a functional interface that takes an argument // and returns a boolean primitive type.Predicate<Integer> pred = x -> x % 2 == 0; // Tests if the parameter is even.boolean result = pred.test(4); // true

Lua

adder = function(x)    return function(y)        return x + y    endendadd5 = adder(5)add5(1) == 6        -- true

Kotlin

val pred = { x: Int -> x % 2 == 0 }val result = pred(4) // true

Ruby

Ruby稍有不同,因为您不能使用与调用函数完全相同的语法来调用lambda,但是它仍然具有lambda。

def adder(x)  lambda { |y| x + y }endadd5 = adder(5)add5[1] == 6

Ruby是Ruby,它是lambda的简写形式,因此您可以这样定义

adder

def adder(x)  -> y { x + y }end

R

adder <- function(x) {  function(y) x + y}add5 <- adder(5)add5(1)#> [1] 6


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号