欢迎访问宙启技术站
智能推送

匿名函数和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 类来启动这个实现。