let apply also run的函数功能是什么

来源:6-3 几个有用的高阶函数

hjh2015

2023-01-24

老师,问一下这几个函数的功能是什么?
比如println,我知道它参数是string返回是unit,但是这没啥用,我得知道println的功能是打印日志才知道怎么样呀。
同理,let apply also run这几个的功能我都不知道是干啥的,到底有什么用呢?
写回答

1回答

bennyhuo

2023-01-25

举个例子,看看能不能理解。

return StringBuilder().apply {
  append(...)
  append(...)
}.also {
  println(it)
}

这几个函数都是没有逻辑的纯函数,他们的功能就是执行他们的参数,也就是传入的 lambda。你可以在你需要某一个对象的作用域的时候使用apply或者run,用哪个取决于你希望得到的结果是这个对象本身还是lambda表达式的结果。let和also类似。如果还是不能理解,那就先放一放,课程后面的例子当中应该会用到他们。

这跟你说的println有很大的不同,println的功能就是它的副作用,即在控制台输出参数,而let also这几个函数内部没有任何额外的逻辑,没有任何副作用。同学也可以自行查看源码来了解他们的内部实现。
1
1
hjh2015
就类似于运行一段代码,只是使用了链式调用这种形式,了解了,谢谢老师
2023-01-25
共1条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1777 学习 · 487 问题

查看课程