All*_*lan 1 reduce functional-programming mapreduce kotlin
我正在尝试了解 Kotlin 中的映射和归约操作。至少,我想这减少了我想做的事情。
假设我有一个名为Car的类,它接受任意数量的CarPart (可变参数构造函数) 。然后,我有一个CarPart列表,我将对其进行映射操作,根据操作结果,我需要使用每个子元素构建一辆 汽车,大致如下:
class CarPart(val description: String)
class Car(vararg val carPart: CarPart)
val carParts = listOf(CarPart("Engine"), CarPart("Steering Wheel")))
carParts.map { it.description.toUpperCase() }
.map { CarPart(it) }
.reduce { acc, carPart -> Car(carPart) } <--- I'm struggling here, is reduce what I should be doing
to construct one car from all the subelement?
Run Code Online (Sandbox Code Playgroud)
PS.1:我知道类设计可以更好,并且不采用可变参数,这只是我正在重构的遗留应用程序的一个示例,最初这是一个采用可变参数的 Java 类,我现在无法更改。
PS.2:映射到字符串然后从该字符串创建对象的示例只是为了示例。实际代码抓取列表中的一个对象。
您可以简单地在数组上使用展开运算符 (*):
val mappedCarParts = carParts
.map { it.description.toUpperCase() }
.map { CarPart(it) }
.toTypedArray()
val car = Car(*mappedCarParts)
// Or even:
val car = carParts
.map { it.description.toUpperCase() }
.map { CarPart(it) }
.toTypedArray()
.let{ Car(*it) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3384 次 |
| 最近记录: |