【2025最新版Kotlin教程】Kotlin第一行代码系列第十三课-标准库函数

91 阅读1分钟
【2025最新版Kotlin教程】Kotlin第一行代码系列第十三课-标准库函数

这个课,得好好看,好好学。用它,会让你的代码初步脱落java,代码更高级

函数式编程

其实let,also,apply,run,with 它就是方法,你可以点进去看源码的。

经验总结:源码不可怕的,看就完事了

总结下区别给你:

  • 1、also和apply都是返回它本身,区别 also还需要写it调用属性和方法
  • 2、let和run都是返回最后一行代码,let中还需要写it调用属性和方法
  • 3、with也是返回最后一行代码,不用写it调用属性和方法
一、let
// 源码联系:893151960
fun main() {
    var a :Int? = 0
    a?.let {

    }
    val ret = listOf<Int>(5,2,1).last().let {
        it.shl(2)
    }
    println(ret)
}
二、also
fun main() {
    var list : List<String>
    File("D://file.txt")
            .also {
                println(it.name)
            }.also {
                it.setReadable(true)
            }.also {
                list = it.readLines()
            }
    println(list)
}
三、apply
fun main() {
    var file = File("D://file.txt").apply {
        setReadable(true)
        setWritable(true)
    }
}
四、run
fun main() {
    val ret = "Welcom,zhh".run {
        contains("zh")
        length
    }
    println(ret)

    //执行函数的引用
    20.run(::getAge)
      .run(::getName)
      .run(::println)
}

private fun getAge(age:Int) = "年龄:$age"

private fun getName(name:String) = "名字:$name"
五、takeIf
fun main() {

    /**
     * 这里 takeIf 后的 ? 符是很容易忽视但又非常重要的。
     */
    // Original code
//    if (someObject != null && status) {
//        doThis()
//    }
//
//    // Improved code
//    someObject?.takeIf{ status }?.apply{ doThis() }





    val ret = File("D://file.txt").takeIf {
        it.exists() && it.canRead()
    }?.readText()
    println(ret)
}
六、takeUnless
fun main() {
    //不满足条件时,才执行后续
    val ret = File("D://file.txt").takeUnless {
        it.isHidden
    }?.readText()

    println(ret)
}
七、with
fun main() {
    //值参作为第一个参数传入
    val ret = with("Hello,Kotlin"){
        length > 5
    }
    println(ret)
}
整个kotlin教程的源码项目结构图:

在这里插入图片描述
有问题或者完整源码的可以看简介联系我,也可以私信我,我每天都看私信的