Lambda表达式实例演练:

继续先来编写一些Lambda表达式相关的代码:

接下来想从上面的字符串数组中找到带有"h"的字符串并打印出来:

如果学习了Java8的Lambda表达式,上面这程序真的是so easy,继续更换条件,找到字符串长度大于4的字会串并打印,依葫芦画瓢:

接下来再来新需求:找出包含不区分大小写字母"d"的字符串,然后将匹配的字符串以大写进行输出,如下:

Lambda表达式返回值:

在默认情况下,Lambda表达式中最后一个表达式的值会隐式作为该Lambda表达式的返回值,我们可以通过全限定的return语法来显示从Lambda表达式返回值。下面用代码来说明下:

解决的办法就是:

接着还可以这样写:

它就是对应于“我们可以通过全限定的return语法来显示从Lambda表达式返回值”。如果这样写就会报错:

其实指的是这个意思,应该这样写:

当然也可以不用return啦:

匿名函数【了解既可,比较繁琐】:

下面咱们定义一个匿名函数:

当然如果放在main()方法外肯定就不行了:

其中匿名函数也可以这样写:

那对于一个函数木有名字如何使用呢,其实一般只能用Lambda表达式来使用它,下面来看一下:

其实还可以改为匿名函数的形式,如下:

闭包:

我们知道JavaScript中闭包是很重要的概念,那在Koltin中有啥作用呢?下面看代码:

这个代码在Java中是不被允许的,很显然在Kotlin是在Lambda表达式中来访问外层作用域的变量,这就是闭包。

Kotlin匿名函数与闭包详解的更多相关文章

  1. python函数调用顺序、高阶函数、嵌套函数、闭包详解

    一:函数调用顺序:其他高级语言类似,Python 不允许在函数未声明之前,对其进行引用或者调用错误示范: def foo(): print 'in the foo' bar() foo() 报错: i ...

  2. PHP中的闭包详解

    PHP闭包(Closure)使用详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-02我要评论 本篇文章介绍了,PHP闭包(Closure)的使用介绍,需要的朋友参考下   不知不 ...

  3. Swift 中的Closures(闭包)详解

    Swift 中的Closures(闭包)详解 在Swift没有发布之前,所有人使用OC语言编写Cocoa上的程序,而其中经常被人们讨论的其中之一 -- Block 一直备受大家的喜爱.在Swift中, ...

  4. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  5. JS中的函数节流throttle详解和优化

    JS中的函数节流throttle详解和优化在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(mousemove),这种事件有一个特点,在一个正常的操作中,有可能在一个短的 ...

  6. JavaScript进阶知识点——函数和对象详解

    JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...

  7. (八)open函数的flag详解

    3.1.4.open函数的flag详解13.1.4.1.读写权限:O_RDONLY O_WRONLY O_RDWR(1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬 ...

  8. JavaScript笔记 第十六章 匿名函数和闭包

    1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function getName() { return 'name'; } a ...

  9. PHP之闭包详解

    匿名函数提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 可以看到 ...

随机推荐

  1. [C#]AdvPropertyGrid的使用示例(第三方控件:DevComponents.DotNetBar2.dll)

    开发环境:Visual Studio 2019 .NET版本:4.5.2 效果如下: 1.初始化界面: 2.属性“人物”-自定义控件显示: 3.属性“地址”-自定义窗体显示: 4.属性“性别”-枚举显 ...

  2. 模型区分度衡量指标-KS值

    1.KS值--学习器将正例和反例分开的能力,确定最好的“截断点” KS曲线和ROC曲线都用到了TPR,FPR.KS曲线是把TPR和FPR都作为纵坐标,而样本数作为横坐标.但是AUC只评价了模型的整体训 ...

  3. 《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机

    <Linux就该这么学>培训笔记_ch09_使用ssh服务管理远程主机 文章最后会post上书本的笔记照片. 文章主要内容: 配置网络服务 远程控制服务 不间断会话服务 书本笔记 配置网络 ...

  4. JavaSE 面试题: 成员变量与局部变量

    JavaSE 面试题 成员变量与局部变量 public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } p ...

  5. 039 RabbitMq及数据同步01

    1.RabbitMq (1)问题引出 目前我们已经完成了商品详情和搜索系统的开发.我们思考一下,是否存在问题? 商品的原始数据保存在数据库中,增删改查都在数据库中完成. 搜索服务数据来源是索引库,如果 ...

  6. 利用分析洞察力来改进Sitecore内容编辑过程

    本文旨在增强内容作者的体验; 利用富有洞察力的数据为编辑过程增添真正的价值. 内容作者的日常生活是忙碌的.从一页跳到另一页,进行修改或创建全新的领域.任务的优先顺序由谁来确定?通常首先那些呼喊最响的人 ...

  7. C编程遇到的一些小细节

    1  typedef int ElemType  -->  typedef int ElemType; 此处要加分行(:),要区别  #defin a 20 此处不需要加分号:#define是预 ...

  8. Android.mk文件官方使用说明

    本页介绍了 ndk-build 所使用的 Android.mk 编译文件的语法. 概览 Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库.它实际上是编译系 ...

  9. FileChannel详解

    经过前两篇文章的学习,相信对Channel有了一定的整体性认识.接下来通过学习本篇文章,更进一步认识Channel,学习FileChannel的细节 用途 特点 api 原理 一.用途 传统IO中的F ...

  10. [K8s 1.9实践]Kubeadm 1.9 HA 高可用 集群 本地离线镜像部署

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9版本发布2017年12月15日,每是那三个月一个迭代, W ...