let , run 的返回值是 高阶函数的参数 lambda表达式的返回值
also, apply的返回值是 就是reveice,不管lambda表达式返回的是什么
最好用的是let, also, use
// 定义一个类Person
class Person(var name: String, var age: Int)
fun main() {
// 定义一个对象person
val person = Person("benny", 20)
person.let {
// it: Person
}
person.run {
// this: Person
}
person.let(::println)
person.run(::println)
var person2 = person.also {
it.name = "jjj"
}
var person3 = person.apply {
name = "xxx"
}
// File 打开一个文件
// inputStream 用来读二进制的
// reader 用来读取char的
// use 能帮我们做很多,不用大新reader会泄露
File("build.gradle").inputStream().reader().buffered()
.use {
// 打印一行
println(it.readLine())
// 打印所有的行
println(it.readLines())
}
}
let的实现
run的实现
use的实现