美文网首页
2018-08-13Lambda表达式

2018-08-13Lambda表达式

作者: huxiaofeng | 来源:发表于2018-08-13 18:21 被阅读0次

简洁地表示可传递的匿名函数的一种方式

测验3.1:Lambda语法

根据上述语法规则,以下哪个不是有效的Lambda表达式?
(1) () -> {}
(2) () -> "Raoul"
(3) () -> {return "Mario";}
(4) (Integer i) -> return "Alan" + i;
(5) (String s) -> {"IronMan";}
答案:只有4和5是无效的Lambda。
(1) 这个Lambda没有参数,并返回void。它类似于主体为空的方法:public void run() {}。
(2) 这个Lambda没有参数,并返回String作为表达式。
(3) 这个Lambda没有参数,并返回String(利用显式返回语句)。
(4) return是一个控制流语句。要使此Lambda有效,需要使花括号,
    如下所示:(Integer i) -> {return "Alan" + i;}。
(5)“Iron Man”是一个表达式,不是一个语句。要使此Lambda有效,你可以去除花括号和分号,
    如下所示:(String s) -> "Iron Man"。或者如果你喜欢,可以使用显式返回语句,
    如下所示:(String s)->{return "IronMan";}。

函数式接口

  • 就是只定义一个抽象方法的接口。

方法引用

  • 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。
    inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));
    inventory.sort(comparing(Apple::getWeight));

方法引用主要有三类

  1. 指向静态方法的方法引用(例如Integer的parseInt方法,写作Integer::parseInt)。
  2. 指向任意类型实例方法的方法引用(例如 String 的 length 方法,写作String::length)。
  3. 指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction用于存放Transaction类型的对象,它支持实例方法getValue,那么你就可以写expensive-Transaction::getValue)

相关文章

  • 2018-08-13Lambda表达式

    简洁地表示可传递的匿名函数的一种方式 测验3.1:Lambda语法 函数式接口 就是只定义一个抽象方法的接口。 方...

  • Twig表达式

    Twig 表达式分为字面表达式、数学表达式、逻辑表达式、比较表达式、包含表达式、测试表达式、字符串插值表达式及其它...

  • php第五天--基本函数

    for变形格式for (表达式1; 表达式2; 表达式3) {循环体} 表达式1;for (; 表达式2; 表达式...

  • Python推导式(列表推导式、元组推导式、字典推导式和集合推导

    列表表达式 元祖表达式 字典表达式 集合表达式

  • 表达式

    原始表达式 最简单的表达式是“原始表达式”。原始表达式是表达式的最小单位,它们不再包含其他表达式。js中原始表达式...

  • 三元运算符

    基本格式 :(关系表达式) ? 表达式1 : 表达式2;执行流程 :关系表达式为 [真] 返回表达式1关系表达式为...

  • for循环

    for(表达式1;表达式2;表达式3){ //循环操作(输出) } 表达式1:循环变量的声明表达式.(a=...

  • daily -- mysql 基础 分支语句( if and

    if函数 语法:IF(表达式1,表达式2,表达式3); 如果表达式1成立(true),返回表达式2的值;如果表达式...

  • 表达式树

    表达式树中缀表达式转换为后缀表达式后缀表达式总结

  • linux 中 if 语句条件的含义

    文件表达式 整数变量表达式 字符串变量表达式 if [ 表达式1 –o 表达式2 ]

网友评论

      本文标题:2018-08-13Lambda表达式

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