`
Ivan_Pig
  • 浏览: 386777 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

[FAQ]什么是lambda表达式

阅读更多

    在一般数学计算中,lambda表达式就是函数:根据部分或所有输入的组合,返回相应的值。lambda表达式作为函数式思想被引入到了Java中。熟悉Java语法的朋友可以把lambda表达式看做是可以接受参数,返回类型,不可修改的,语法简洁的匿名方法。

 

语法:

(parameters) -> expression
或者

(parameters) -> { statements; }

 

例子:

1. (int x, int y) -> x + y                          // 接受两个整数,并返回两数的和
2. (x, y) -> x - y                                  //
接受两个数,并返回差值
3. () -> 42                                         //
不接受参数,直接返回42
4. (String s) -> System.out.println(s)              //
接受字符串,打印标准输出,没有返回值

5. x -> 2 * x                                       // 接受数字,并返回该值的2
6. c -> { int s = c.size(); c.clear(); return s; }  //
接受一个集合。清空该集合,

                                                                                                               返回该集合未清空前的长度

 

语法注意点:

  1. 可以明确的指出参数类型(比如,1,4)也可以不明确指出(2,5,6).在单个lambda表达式中,
    无论你明不明确指出参数类型都是没有关系的。
  2. lambda表达式的表达式体可以是个语句块(被大括号包围,例如:6)或者是个表达式(例如:1-5)
    语句块式的表达式体能返回值或者不返回。使用或省略
    return关键字的规则和普通的方法体相同。
  1. 如果表达式体是个表达式,那么它也可以返回值(例如:1,2,3,5),也可以不返回(例如:4)
  2. 如果表达式只有一个参数那么括号可以省略(例如:5,6)
  1. 例子6后的注释说此lambda表达式需要一个集合作为参数。而实际上,根据上下文环境的不同,
    此表达式不限于集合参数,只要参数包含
    size方法和clear方法,并且接受合适的参数且返回合适的类型即可。

 

0
1
分享到:
评论

相关推荐

    Kotlin 中文文档.pdf

    类和继承 属性和字段 接口 可见性修饰词 扩展 数据对象 泛型 嵌套类 枚举类 对象表达式和声明 代理模式 代理属性 函数和lambda表达式 函数 高阶函数和lambda表达式 内联函数 其它 多重申明 Ranges 类型检查和自动...

    Kotlin 语言参考文档 中文版

    高阶函数与 Lambda 表达式 内联函数(Inline Function) 其他 解构声明(Destructuring Declaration) 集合(Collection) 值范围(Range) 类型检查与类型转换 this 表达式 相等判断 操作符重载(Operator overloading) Null...

    kotlin_in_chinese

    Kotlin支持现代的编程范式,如扩展函数、Lambda表达式、数据类、密封类和智能转换等。它还引入了协程来优雅地处理异步编程。本文将介绍Kotlin的核心概念、语言特性以及与Java和Scala的对比。 ### Kotlin核心概念和...

    c++11FAQ中文版

    - Lambda表达式:简化了创建匿名函数对象的过程。 - 用户定义字面量:允许程序员创建自己的字面量(例如,为复数类型创建的字面量)。 - 右值引用和移动语义:提高了复制操作的效率。 - 模板别名:为模板类型...

    Kotlin 语言文档

    高阶函数和 lambda 表达式 78 内联函数 82 协程 85 其他 89 解构声明 89 集合:List、Set、Map 91 区间 92 2类型的检查与转换“is”与“as” 94 This 表达式 96 相等性 97 操作符重载 98 空安全 102 异常 104 注解 ...

    c++-faq-lite

    12. **C++11及后续版本的新特性**:C++11引入了lambda表达式、右值引用、类型推断(auto关键字)、move语义、强类型枚举等,后续的C++14和C++17继续扩展了这些特性,提升了C++的现代性和效率。 《C++ FAQ Lite》...

    c++faq ,讨论了关于c++的一些基本问题。英文。

    14. **C++11及后续版本的新特性**:C++11、C++14、C++17等新标准引入了许多改进和新特性,如Lambda表达式、右值引用、auto类型推导、范围for循环等。 通过阅读和理解C++FAQ,开发者不仅可以解决实际编程中的问题,...

    the boost c++ library.pdf

    - **动机**:为什么需要 Boost.Lambda。 - **lambda 表达式简介**:介绍了 lambda 表达式的概念及其在 C++ 中的应用。 4. **使用指南** - **入门示例**:展示了一些简单的使用示例。 - **参数和返回类型**:...

    kotlin-in-chinese.pdf

    * lambda 表达式:Kotlin 语言提供了 lambda 表达式机制,用于定义匿名函数。 * 高阶函数:Kotlin 语言提供了高阶函数机制,用于将函数作为参数传递或返回函数。 协程 * 协程定义:Kotlin 语言提供了协程定义机制...

    C++ 0x FAQ 翻译版

    总结来说,C++0x(C++11)是一个里程碑式的更新,极大地提升了C++的现代编程体验,引入的特性如自动类型推断、右值引用、lambda表达式等,至今仍然是C++程序员日常开发中的重要工具。学习和理解这些新特性对于任何想...

    java_FAQ.rar_Something About You

    13. **Lambda表达式**:Java 8引入的Lambda表达式简化了函数式编程,使代码更加简洁、易读。 14. **Stream API**:Stream API为处理集合提供了新的方式,支持链式操作,适合进行大量数据的过滤、映射和归约操作。 ...

    C++11FAQ中文版pdf(带完整书签141页)

    6. **Lambda表达式**:Lambda表达式允许开发者直接在代码中定义匿名函数对象,从而简化回调函数和事件处理器的编写。 7. **可变参数模板(Variadic Templates)**:C++11允许模板接受任意数量和类型的参数,这为...

    C++ FAQ

    10. **C++11及后续标准**:自C++11以来,C++标准不断更新,引入了新特性如lambda表达式、右值引用、自动类型推断(auto关键字)、统一初始化等,使C++更加现代和易用。 阅读《C++ FAQ》,开发者将能够逐步掌握这些...

    C and C++ FAQ Frequently Asked Questions 整理

    C++还引入了C++11、C++14、C++17、C++20等新标准,带来了更多的语言改进和库支持,如lambda表达式、右值引用、并发编程支持、类型推断(auto)等。 在阅读"C and C++ FAQ.CHM"时,开发者可以找到关于这些主题的详细...

    kotlin-docs

    **函数与 Lambda 表达式** 部分深入讨论了 Kotlin 中函数的定义和使用,以及高阶函数和 Lambda 表达式的应用,这对于理解和利用函数式编程风格至关重要。内联函数则是一种优化技术,可以减少运行时的开销。 **其他...

    编程及C++初学者FAQ_whentrt_Vc_

    15. **C++11及以上新特性**:例如智能指针、右值引用、lambda表达式、自动类型推导等。 由于文档的名称包含“FAQ”字样,所以每个主题下可能还会包含具体的问答形式,解答了初学者在实际编程过程中遇到的具体问题,...

    cpp 2011标准

    2. Lambda表达式:C++11的lambda表达式允许程序员编写匿名函数对象,这极大地方便了在算法中使用临时定义的函数。 3. auto关键字和类型推导:auto关键字在C++11中得到了新的生命,允许编译器自动推导变量类型。这...

    C++0x_FAQ.pdf

    1. **Lambda表达式**:提供了一种简洁的方式定义简单的匿名函数,大大简化了函数式编程风格代码的编写。 2. **Range-based for循环**:提供了一种更直观的方式来遍历容器中的元素,提高了代码的可读性。 3. **...

Global site tag (gtag.js) - Google Analytics