let apply also run的函数功能是什么
来源:6-3 几个有用的高阶函数

hjh2015
2023-01-24
老师,问一下这几个函数的功能是什么?
比如println,我知道它参数是string返回是unit,但是这没啥用,我得知道println的功能是打印日志才知道怎么样呀。
同理,let apply also run这几个的功能我都不知道是干啥的,到底有什么用呢?
比如println,我知道它参数是string返回是unit,但是这没啥用,我得知道println的功能是打印日志才知道怎么样呀。
同理,let apply also run这几个的功能我都不知道是干啥的,到底有什么用呢?
写回答
1回答
-
举个例子,看看能不能理解。
return StringBuilder().apply {
append(...)
append(...)
}.also {
println(it)
}
这几个函数都是没有逻辑的纯函数,他们的功能就是执行他们的参数,也就是传入的 lambda。你可以在你需要某一个对象的作用域的时候使用apply或者run,用哪个取决于你希望得到的结果是这个对象本身还是lambda表达式的结果。let和also类似。如果还是不能理解,那就先放一放,课程后面的例子当中应该会用到他们。
这跟你说的println有很大的不同,println的功能就是它的副作用,即在控制台输出参数,而let also这几个函数内部没有任何额外的逻辑,没有任何副作用。同学也可以自行查看源码来了解他们的内部实现。112023-01-25
相似问题