Lambda表达式概述

Lambda表达式,是一种匿名函数,它的名称来源于λ演算,一开始只有函数式编程语言中有此功能,但是现在已经有越来越多的命令式编程语言中也支持了Lambda表达式。

LISP

1958年诞生的LISP语言最早支持Lambda表达式。

((lambda (n) (* n n)) 9)

Python

square = lambda n : n * n
print(square(9))

C#

2007年发布的C# 3.0中提供了Lambda表达式。

// 传统方式:
Func<int,int> square = (n) => n * n;
Console.WriteLine(square(9));

//使用本地函数(C# 7.0中增加):
static int square(int n) => n * n;
Console.WriteLine(square(9));

C++

2011年发布的C++ 11中提供了Lambda表达式。

auto square = [](int n) {return n * n;};
cout << square(9) << endl;

Objective-C

int (^square)(int)=^(int n){return n*n;};
NSLog(@"%d", square(9));

Java

2014年发布的Java 8中提供了Lambda表达式。

IntFunction<Integer> square = n -> n * n;
System.out.println(square.apply(9));

JavaScript

2015年发布的ES 6中提供了Lambda表达式,即箭头函数。

let square = n => n * n;
alert(square(9));

Scala

val square = (n:Int) => n * n
println(square(9))

Kotlin

val square = {n: Int -> n * n}
println(square(9))

F#

let square = fun n -> n * n
printfn "%d" (square 9)

Haskell

let square = (\n -> n * n)
print(square 9)

Ruby

# 旧语法
square = lambda {|n| n * n}
puts(square.call(9))

# Ruby 1.9的新语法
square = ->(n){n * n}
puts(square.call(9))

Swift

let square = {n -> Int in return n*n}
print(square(9))

你可能感兴趣的:(编程语言)