Kotlin实战读书笔记(五 Lambda)
2017-12-06 本文已影响0人
Pyrrha_89c6
基本形式 { x: Int,y: Int -> x+y }
调用lambda
some.func{ it.param } //只有一个参数可以将其放到外边,lambda只有一个参数是可以用it代表参数
some.func(""){} //有别的参数,且lambda是最后一个参数
some.func("",{}){} //有多个lambda参数
将方法变成lambda形式
Object::property //property是属性或方法,适用于扩展函数
::property //顶层函数属性的引用方式
// kotlin1.1支持的绑定成员引用
class Person(val name: String,val age: Int)
val p =Person("Andy",21)
val personage = p::age
personage() //21
kotlin集合支持filter,map,flatMap等操作
kotlin集合支持all、any、count、find判断式
kotlin集合支持groupBy将集合分组后保存成Map的操作,对数据处理作用极大
kotlin执行集合链式操作时应该先转成序列最后再转回去(和Java8的stream差不多),这样能大量提升效率
关于性能提升的解释查看书P123
list.asSquence()
.map{}
.filter{}
.toList()
创建序列
生成并使用自然数
val naturalNumbers = generateSequence(0){ it +1 }
naturalNumbers.takeWhile{ it <= 100 }.sum() //5050
支持with操作,和Js的with差不多
fun aToz() = with(StringBuilder()){ //返回表达式值
for ( c in 'a'..'z'){
append(c)
}
toString()
// this@OuterClass.toString() 调用外部的toString
}
apply函数
fun aToz1() = StringBuilder().apply{ //返回对象
for ( c in 'a'..'z'){
append(c)
}
}.toString()
==
fun aToz2() = buildString{ // buildString 系统内建函数
for ( c in 'a'..'z'){
append(c)
}
}