为什么使用Lambda

以下语法来自于Java8

Lambda是一种匿名函数,函数的作用是接受一个输入,得到一个输出(也可能不需要输出,仅利用其执行的副作用)。

利用Lambda可以封装变化,写出更灵活的代码。

举一个例子

假如有这样一个类

public Person {
    String firstName;
    String lastName;
}

如果想将Person作为一个String输出,以西方的习惯,可以定义一个成员函数

public String printWestern() {
    System.out.println(lastName + " " + firstName);
}

这时如果有一个需要变化,想要以东方的方式输出,则需要修改源代码,再添加一个成员函数

public String printEastern() {
    System.out.println(firstName + " " + lastName);
}

如果还想以其它方式输出呢?是不是还需要修改源代码,重新编译?

这里,变化的是输出的方式。而输出方式却是由函数定义的。

暂时放下,想想另一个话题-变量

对以下代码

foobar.setWidth(8);

都知道需要设置一个变量,然后再传入进入

int width = 8;
foobar.setWidth(width);

这样变量的值可以在运行时,从数据库读入,交互方式输入,或从文件读入,这样就可以不改变源代码,从而改变程序的行为。

如果函数也可以像变量一样,岂不可以改善前面的问题了吗?

Lambda就是一种方法。

利用Lambda后可以这样写

public String printCustom(Function

客户程序可以这样

Function westernStyle = p -> {
    return lastName + " " + firstName;
}

person.printCustom(westernStyle);

Function easternStyle = p -> {
    return firstName + " " + lastName;
}

person.printCustom(easternStyle);

这里,函数就可以将变量一样使用了。

如果在一个程序语言中,函数

  1. 可以赋值给变量
  2. 做为形参传入另一函数
  3. 做为函数返回值返回

那么可以称其为first class citizen

注:

以上例子来自于Lambda Qucik Start,更详细的介绍请参考原文。

你可能感兴趣的:(为什么使用Lambda)