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.zipWithIndex(インデックスと各要素をペアにします)。または、 を参照してargs.grouped(2)ください。

于 2013-01-22T22:31:22.140 に答える