我正在使用来自命令行的参数,这是以数组的形式,我想将其转换为地图。
例如,当我使用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
答案 0 :(得分:7)
您想要grouped
:
args.grouped(2).map { case Array(n,v) => (n,v) }.toMap
答案 1 :(得分:4)
您完全以错误的方式使用for
。这会对你args的每个元素进行一次新的迭代。如果您想要一个可以解决的索引,请尝试args.zipWithIndex
(将索引与每个元素配对)。或者,请查看args.grouped(2)
。