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)
    }
}
上一篇下一篇

猜你喜欢

热点阅读