
128
|
第
7
章
7.4
使用
let
函数代替临时变量
问题
如何在不将计算的结果分配给临时变量的情况下处理它?
解决方案
链式调用 let 函数,并在提供的 lambda 表达式或函数引用中计算或处理结果。
讨论
Kotlin 网站(
https://oreil.ly/5S_Xv
)作用域函数的文档页展示了一个 let 函数的有趣用
例。这个示例(在示例 7-9 中重复给出)创建了一个可变的字符串列表,然后将它们映
射到它们的长度,并过滤结果。
示例 7-9:在线文档中的 let 函数示例(重构前)
// Before
val numbers = mutableListOf("one", "two", "three", "four", "five")
val resultList = numbers.map { it.length }.filter { it > 3 }
println(resultList)
➊
➊
将计算的值赋值给用于打印的临时变量。
在后面的重构中使用 let 函数,代码如示例 7-10 所示
示例 7-10:使用 let 函数进行重构
// After
val numbers = mutableListOf("one", "two", "three", "four", "five")
numbers.map { it.length }.filter { it > 3 }.let {
println(it)
// 如果需要的话可以进行更多函数调用
}
其思想是,将链式 let 调用的结果作为上下文变量,而不是将结果赋值给临时变量,因 ...