高阶函数 函数的参数为函数或者返回值为函数
高阶函数内联
函数本身被内联到调用处
函数的函数参数被内联到调用处
val ins= intArrayOf(1,2,3,4)
ins.forEach {
if(it==3) return@forEach//只跳出本次 输出1 2 4
println(it)
}
crossline 修饰 non-local return
File("").inputStream().reader().buffered().use {
}
val list= intArrayOf(1,2,3,4,5,6,7,8,9,10)
val list1=list.filter { it%2==0 }//偶数集合
val map=list.map { it*2+1 }
list.asSequence().filter {
println("filter $it")
it%2==0
}.map {
println("map $it")
it*2+1
}.forEach{
println(it)
}
map将集合中的元素映射成新的元素 flatmap将集合中的元素映射成新的集合 并且拼接起来
asSequence 懒汉式
list.fold( " "){
acc,i-> acc+i+" "
}.let (::println)
SAM Single Abstract Method 接口
File("build.gradle").readText()//读文件 返回string
.toCharArray()//转换为char[]
.filterNot { it.isWhitespace() }//去除空格
.groupBy { it }
.map {
it.key to it.value.size }
.let(::println)
DSL 领域特定语言
data修饰class 数据类 component ,默认重写了hascode equals 解构
sealed 修饰 密封类 一种特殊的抽象类 其子类必须跟它在同一个文件中