Lanbda基础

/*
*Lambda允许把代码块当作参数传递给函数
*/
fun a(plus:(Int,Int)->Unit){
plus(,) //声明函数的地方,调用代码块,在这里传参
} //在调用函数的地方,写代码块的实现
fun main(args: Array<String>) {
a({a1,a2->
println(a1+a2) //在这里操作参数
})
} /*
*如果这个代码块是最后一个参数,可以把大括号写在圆括号外面
*/
a(){a1,a2->
println(a1+a2) //在这里操作参数
} /*
*如果这个代码块是唯一的参数,可以省略括号
*/
a{a1,a2->
println(a1+a2) //在这里操作参数
} /*
*如果代码块的参数只有一个a1,那么这个参数也可以省略,默认为it
*/
a{
println(it) //在这里操作参数
}

Lambda对集合的操作

val list= arrayListOf(,,,,,,)

//foreach遍历,这里省略了参数
>>> list.forEach{
>>> println("${it} ")
>>> } //filter 只保留符合条件的数据
>>>println( list.filter { it> } )
[,,,,] //map 得到操作后的数据
>>>println( list.map { it>*it } )
[, , , , , , ] //all 判断集合内数据是否全都符合
>>>println( list.all { it> } )
false //any 判断集合是否至少存在一个符合条件的值
>>>println( list.any { it> } )
true //find 找到符合条件的第一个数据
>>>println( list.find { it> } ) //count 找到符合条件的数据数量
>>>println( list.find { it> } ) //可以链式调用,如 找到it+1 之后,是偶数的数据
>>>println( list.map { it+ }.filter{ it%== } )
[, , ] //上面的链式调用,其实把map的结果保存一次之后,再进行filter,在保存filter结果,其实保存了两次,可以把初始集合转换成序列,提高效率
list.asSequence()
.map { it+ }
.filter{ it%== }

带接收者的Lambda:with和apply

/*
*正常打印A到Z的函数,会重复写result很多次
*/
fun alphabet():String{
val result=StringBuilder()
for(i in 'A'..'Z'){
result.append(i)
}
result.append("\n end!")
return result.toString()
} /*
*使用with来重构,with可以接收str对象,Lambda里面的代码块可以省略str,最后一行作为返回值
*/
fun alphabet():String{
val str=StringBuilder()
return with(str){
for(i in 'A'..'Z'){
this.append(i) //可以用this显式调用,也可以省略
}
append("\n end!")
toString()
}
} /*
*使用apply来重构,它把调用apply的对象作为接收对象进行操作
*/
fun alphabet():String{
return StringBuilder().apply{
for(i in 'A'..'Z'){
append(i)
}
append("\n end!")
}.toString()
}

Kotlin学习(4)Lambda的更多相关文章

  1. Kotlin函数与Lambda表达式深入

    Kotlin函数: 关于Kotlin函数在之前也一直在用,用fun来声明,回忆下: 下面再来整体对Kotlin的函数进行一个学习. 默认参数(default arguments): 先来定义一个函数: ...

  2. Kotlin学习笔记(9)- 数据类

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...

  3. Java8学习笔记----Lambda表达式 (转)

    Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家       本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...

  4. 通过这些示例快速学习Java lambda语法

    对于那些不熟悉函数式编程的人来说,基本的Java lambda语法起初可能有点令人生畏.但是,一旦将lambda表达式分解为它们的组成部分,语法很快就会变得有意义并变得非常自然. Java中lambd ...

  5. kotlin 学习感受

    目录 kotlin 学习感受 特点 优点 屎一样的缺点 总结 kotlin 学习感受 直白的说..很不好,像屎一样,本来对此抱有很大的期望和好感度,但经过一整天的学习,完全失望了,这门语言中间有各种的 ...

  6. Kotlin 学习笔记(一)

    (Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...

  7. JAVA8学习——深入浅出Lambda表达式(学习过程)

    JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在 ...

  8. Kotlin学习快速入门(7)——扩展的妙用

    原文地址: Kotlin学习快速入门(7)--扩展的妙用 - Stars-One的杂货小窝 之前也模模糊糊地在用这个功能,也是十分方便,可以不用继承,快速给某个类增加新的方法,本篇便是来讲解下Kotl ...

  9. 释放Android的函数式能量(I):Kotlin语言的Lambda表达式

    原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antonioleiva.com/operator-o ...

随机推荐

  1. MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main re

    出现这个问题是因为工程是应用win32,必须要有main函数,修改方式为: configuration properties中General->configuration Type->将a ...

  2. Linux基础教程 linux下cat 命令使用详解

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...

  3. JUnit——运行多个测试方法

    TDD=Test Drive Development   在实际应用中作用特别大,因为我们会定义很多的类和方法,也会存在很多的更新操作,这样如果用main函数进行测试,则会异常麻烦. 而如果用这种多个 ...

  4. sublime安装完插件后出现的一些问题

    1.安装anaconda后代码前面出现小方框 解决办法:这是由于不符合PEP8代码规范,在空白地方右击,选择anaconda --> autoformat PEP8 Errors ,同时保证导入 ...

  5. django model序列化作用举例

    一直对使用DRF的了解停留在一知半解的状态,今天在实际操作中,感受到了DRF带来的方便 Django工程,其中两个model定义如下: AutomationHeadRaw: class Automat ...

  6. 【技术分享:python 应用之一】如何使用 Python 对 Excel 做一份数据透视表

    客户这边,其中有一张如同上图所示的数据汇总表,然而需求是,需要将这张表数据做一个数据透视表,最后通过数据透视表中的数据,填写至系统数据库.拿到需求,首先就想到肯定不能直接用设计器去操作 Excel,通 ...

  7. android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient

    这几个类都是用于和服务器端的连接,有些功能都能够实现,关系是: 一.URL URL标识着网络上的一个资源:该类包含一些URL自身的方法,如获取URL对应的主机名称,端口号,协议,查询字符串外,还有些方 ...

  8. Java 实现日期 Date 的赋值

    关键的语句也就三句话: (1) SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); (2) Date ...

  9. Jcaptcha组件和kaptcha组件实现验证码

  10. java实验报告&第三周学习总结

    实验报告: 实验1:求水仙花数在C语言中求水仙花数是一个复杂且长的代码,在java中可以通过简单的代码来实现操作,找出水仙花数: 图例如下: 试验2:求13+23-33+43-53.........9 ...