1

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

因此,例如,当我运行我的代码时,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
4

2 回答 2

7

你想要grouped

args.grouped(2).map { case Array(n,v) => (n,v) }.toMap
于 2013-01-22T22:31:11.893 回答
4

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

于 2013-01-22T22:31:22.140 回答