【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教程的源码项目结构图:
有问题或者完整源码的可以看简介联系我,也可以私信我,我每天都看私信的