定义
Lambda 表达式是一个匿名函数,即没有函数名的函数。本文总结Lambda表达式在java,C++,Python中的标准用法和代码示例
java
语法格式:
(parameters) -> expression或(parameters) ->{ statements; }
简单例子:
- 不需要参数,返回值为 5
() -> 5- 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x- 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y- 接收2个int型整数,返回他们的和
(int x, int y) -> x + y- 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
代码示例:
//未使用Lambda表达式
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
System.out.println("Action detected");
}
});
//使用Lambda表达式
button.addActionListener( actionEvent -> {
System.out.println("Action detected");
});
C++
语法格式:
[capture list] (parameter list) -> return type { function body }
代码示例:
//未使用Lambda表达式
bool compare(int& a,int& b){return a>b;}
sort(a, a+n, compare);
//使用Lambda表达式
sort(a, a+n, [](int a,int b){return a>b;});
Python
语法格式:
lambda 形参列表 : 函数返回值表达式语句
代码示例:
#未使用Lambda表达式
def comp(x):
return x["age"]
li=[{"age":20,"name":"def"},{"age":25,"name":"abc"},{"age":10,"name":"ghi"}]
li=sorted(li, key=comp)
#使用Lambda表达式
li=[{"age":20,"name":"def"},{"age":25,"name":"abc"},{"age":10,"name":"ghi"}]
li=sorted(li, key=lambda x:x["age"])