标签:程序设计 设计 ace 创建 return 输出 als 计算 src
Lambda表达式:Java8引入的,一种紧凑,传递行为的方式。整个的思想就是函数式编程,什么是函数式编程,即:函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!函数式编程的基础是函数式接口:它指的是有且只有一个未实现的方法的接口,一般通过@FunctionalInterface这个注解来表明某个接口是一个函数式接口。
比如下面这段例子:
Runnable multiStatement = () ->{
System.out.println("Hello");
System.out.println("lambda");
};
格式解释:
函数的输出,函数式编程是可以有输出的,可以使用return或者异常退出
Runnable noArguments = () -> System.out.println("Hello,lambda");
ActinListener oenArgument = event -> System.out.println("Hello,lambda");
Runnable multiStatement = () ->{
System.out.println("Hello");
System.out.println("lambda");
};
BinaryOperator<Long> add = (x,y) ->x+y;
//lambda表达式的类型编译器会自动推断得出,所以常常不需要写明,但有时显式地申明出来更好
BinaryOperator<Long> addExplicit = (Long x,Long y) ->x+y;
函数接口:只有一个抽象方法地接口,可以用作Lambda表达式地类型,这里主要有三个接口Consumer,Function,Predicate
示例:
//函数接口
public interface Predicate<T>{
Boolean test( T t);
}
//lambda表达式,注意这里lambda表达式带了返回值,返回值就是boolean即函数方法的返回值,atLeast5是一个对象就像一个实例,使用的时候如下,然后返回值就是false
Predicate<Integer> atLeast5 = x - > x > 5;
System.out.println(atLeast5.test(4));
Consumer是一个函数式编程接口; 顾名思义,Consumer的意思就是消费,即针对某个东西我们来使用它,表示接受单个输入参数但不返回结果的操作,因此它包含有一个有输入而无输出的accept接口方法;当然除accept方法,它还包含有andThen这个方法
Oracle API
public static void consumerTest() {
Consumer f = System.out::println;
Consumer f2 = n -> System.out.println(n + "-F2");
//执行完F后再执行F2的Accept方法
f.andThen(f2).accept("test");
//连续执行F的Accept方法
f.andThen(f).andThen(f).andThen(f).accept("test1");
}
public static void main( String[] args ) {
consumerTest();
}
方法:
compose是将传入的函数作为参数,将本函数结果作为最终输出
andThen是将本函数结果传给参数函数,将参数函数的结果作为最终输出
本博客为Swagger-Ranger的笔记分享,文中源码地址: https://github.com/Swagger-Ranger
欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com
标签:程序设计 设计 ace 创建 return 输出 als 计算 src
原文地址:https://www.cnblogs.com/Swagger-Ranger/p/10669971.html