Kotlin匿名函数与闭包详解
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匿名函数与闭包详解的更多相关文章
- python函数调用顺序、高阶函数、嵌套函数、闭包详解
一:函数调用顺序:其他高级语言类似,Python 不允许在函数未声明之前,对其进行引用或者调用错误示范: def foo(): print 'in the foo' bar() foo() 报错: i ...
- PHP中的闭包详解
PHP闭包(Closure)使用详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-02我要评论 本篇文章介绍了,PHP闭包(Closure)的使用介绍,需要的朋友参考下 不知不 ...
- Swift 中的Closures(闭包)详解
Swift 中的Closures(闭包)详解 在Swift没有发布之前,所有人使用OC语言编写Cocoa上的程序,而其中经常被人们讨论的其中之一 -- Block 一直备受大家的喜爱.在Swift中, ...
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- JS中的函数节流throttle详解和优化
JS中的函数节流throttle详解和优化在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(mousemove),这种事件有一个特点,在一个正常的操作中,有可能在一个短的 ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- (八)open函数的flag详解
3.1.4.open函数的flag详解13.1.4.1.读写权限:O_RDONLY O_WRONLY O_RDWR(1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬 ...
- JavaScript笔记 第十六章 匿名函数和闭包
1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function getName() { return 'name'; } a ...
- PHP之闭包详解
匿名函数提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 可以看到 ...
随机推荐
- 安装goimports
当我们执行 go get golang.org/x/tools/cmd/goimports 会报错package golang.org/x/tools/cmd/goimports: unrecogni ...
- Golang(二)基本概念
类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...
- Leetcode 初刷(1)
1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样 ...
- 在myecplice中关联svn
1:下载插件 site-1.8.22 2:找到myecplic的安装目录 下的dropins 文件夹(例如:C:\Users\han\AppData\Local\MyEclipse Professio ...
- flume参数解析+启动参数解析
flume参数: #example.conf:单节点Flume配置 #命名此代理上的组件 a1.sources = r1 a1.sinks = k1 a1.channels = c1 #描述/配置源 ...
- python 将列表里的字典元素合并为一个字典
python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...
- MySql Packet for query is too large问题解决方案
MySQL会限制Server接受的数据包大小.有时候插入.更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败.报错信息为: Caused by: com.my ...
- Effective.Java第56-66条(规范相关)
56. 为所有已公开的API元素编写文档注释 要正确地记录API,必须在每个导出的类.接口.构造方法.方法和属性声明之前加上文档注释.如果一个类是可序列化的,还需要记录它的序列化形式. 文档注释在源 ...
- 【Python爬虫案例学习】Python爬取天涯论坛评论
用到的包有requests - BeautSoup 我爬的是天涯论坛的财经论坛:'http://bbs.tianya.cn/list.jsp?item=develop' 它里面的其中的一个帖子的URL ...
- Java学习:数据库连接池技术
本节内容 数据库连接池 Spring JDBC : JDBC Template 数据库连接池 1.概念:其实就是一个容器(集合),存放数据库连接的容器 当系统初始化好后,容器中会申请一些连接对象,当用 ...