我有两个函数迭代列表并从中制作一个映射.
def indexedShade: Map[String, Color] =
myTextFile.map(c => (c.toShade, c)).toMap
def indexedQuantity: Map[String, Color] =
myTextFile.map(c => (c.toQuantity, c)).toMap
Run Code Online (Sandbox Code Playgroud)
由于我myTextFile多次迭代,我想迭代一次并创建所需的两个映射.如何创建一个只迭代一次并返回两个 的函数Map[String, Color]?
如果你真的只需要迭代一次并map在飞行中构建,你可以用foldLeft:
val (indexedShade, indexedQuantity) = myTextFile
.foldLeft((Map.empty[String, Color], Map.empty[String, Color]))((acc, cur) =>
(acc._1 + (cur.toShade -> cur), acc._2 + (cur.toQuantity -> cur)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |