美文网首页
为什么使用Lambda

为什么使用Lambda

作者: lingnanlu | 来源:发表于2015-12-22 22:44 被阅读362次

    以下语法来自于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<Person, String) f) {
        return f.apply(this);
    }
    

    客户程序可以这样

    Function<Person, String> westernStyle = p -> {
        return lastName + " " + firstName;
    }
    
    person.printCustom(westernStyle);
    
    Function<Person, String> easternStyle = p -> {
        return firstName + " " + lastName;
    }
    
    person.printCustom(easternStyle);
    

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

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

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

    那么可以称其为first class citizen

    注:

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

    相关文章

      网友评论

          本文标题:为什么使用Lambda

          本文链接:https://www.haomeiwen.com/subject/liqvhttx.html