美文网首页
Kotlin实战读书笔记(五 Lambda)

Kotlin实战读书笔记(五 Lambda)

作者: Pyrrha_89c6 | 来源:发表于2017-12-06 22:52 被阅读0次

    基本形式 { 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)
        }
    }
    

    相关文章

      网友评论

          本文标题:Kotlin实战读书笔记(五 Lambda)

          本文链接:https://www.haomeiwen.com/subject/wbelixtx.html