我的目标是使用Map
(不可变)而不是类来表示我在Scala中的数据。我只是将数据从一个源文件转换为另一种格式,使用Map
似乎是合理的,而是建模一个类来表示我的数据。
示例:
我有一份原始数据列表清单。
val x = List(List("a","b","c"), List("x","y","z")) // the values, order matters
val y = List("field1","field2","field3") // the keys, order matters
我想将架构应用于原始数据并创建地图列表。订单与地图无关。
val z = List(Map("field1" -> "a", "field2" -> "b", "field3" -> "c"), List("field1" -> "x", "field2" -> "y", "field3" -> "z"))
我尝试过拉链但不是我想要的
val z = x zip(y) toMap
z: scala.collection.immutable.Map[List[String],String] = Map(List(a, b, c) -> field1, List(x, y, z) -> field2)
我一直不知道如何使用x
映射y
并返回Map
。
一些方向将不胜感激。
EDITED:这种方法的灵感来自Rich Hickey的talk。
答案 0 :(得分:7)
我认为您使用zip
走在正确的轨道上,您只需要通过x
将其应用于map
中的每个项目,而不是将其应用于{{1}本身。这是一个解决方案,我相信还有其他解决方案:
x