如何将多个参数保存到Map?

时间:2013-01-22 22:24:32

标签: list scala map immutability

我正在使用来自命令行的参数,这是以数组的形式,我想将其转换为地图。

例如,当我使用scala abc.scala A 10 B 20 C 30运行我的代码时,我希望拥有Map(A->10, B->20, C->30)。此外,我只能使用val,所以我不能重新分配它,因为它是不可变的。我使用以下代码失败:

val names = args.filter(x => for(i <- 0 to args.length-1) i%2==0)
val numbers = args.partition(args(i) => i%2==1)
names.zip(numbers).toMap

2 个答案:

答案 0 :(得分:7)

您想要grouped

args.grouped(2).map { case Array(n,v) => (n,v) }.toMap

答案 1 :(得分:4)

您完全以错误的方式使用for。这会对你args的每个元素进行一次新的迭代。如果您想要一个可以解决的索引,请尝试args.zipWithIndex(将索引与每个元素配对)。或者,请查看args.grouped(2)