匿名函数和Lambda表达式的定义和使用
发布时间:2023-06-11 01:28:07
匿名函数和Lambda表达式是现代编程中非常常见的概念,尤其在函数式编程语言和语言中间库中经常出现。
匿名函数
在以往的编程中,函数在定义时都有一个函数名,而匿名函数就是没有函数名的函数。匿名函数可以是一个表达式,也可以是一段代码块。
在很多编程语言中,匿名函数可以赋值给变量并直接调用,也可以作为其他函数的参数传递。
例如在 JavaScript 中定义一个匿名函数:
var add = function (a, b) { return a + b };
console.log(add(1, 2)); // 输出 3
其中的 function (a, b) { return a + b } 就是一个匿名函数。我们赋值给变量 add,然后可以用 add(1, 2) 来调用这个函数。
Lambda 表达式
Lambda 表达式是一种匿名函数,常用于函数式编程中。Lambda 表达式可以看作是定义函数的一种简洁方式。Lambda 表达式的常见语法形式是:(parameter) -> expression。
在很多编程语言中,Lambda 表达式可以赋值给变量并直接调用,也可以作为其他函数的参数传递。
例如在 Java 中定义一个 Lambda 表达式:
interface MathOperation {
int operation(int a, int b);
}
public class LambdaDemo {
public static void main(String[] args) {
MathOperation add = (a, b) -> a + b;
System.out.println(add.operation(1, 2)); // 输出 3
}
}
这里定义了一个函数式接口 MathOperation,然后用 Lambda 表达式 (a, b) -> a + b 定义了一个具体的算法 add,把它赋值给 MathOperation 接口的实例变量 add。最后用 add.operation(1, 2) 来调用。
Lambda 表达式还可以在函数式接口之外使用,例如在 Java 中:
public class LambdaDemo {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello, Lambda!");
Thread t = new Thread(r);
t.start();
}
}
这里用 Lambda 表达式 () -> System.out.println("Hello, Lambda!") 定义了一个 Runnable 接口的实现,然后用 Thread 类来启动这个实现。
