scala: Как передать расширенный список как varargs в метод? - PullRequest
47 голосов
/ 31 марта 2011

При создании Map в Scala я звоню Map(entities.map{e => e.id -> e}) и получаю:

found   : scala.collection.mutable.IndexedSeq[(Int, Entity)]
required: (Int, Entity)

Это потому, что подпись для Map.apply: def apply[A, B](elems: (A, B)*): CC[A, B], который требует аргумента стиля varargs.

Есть ли способ преобразовать IndexedSeq, чтобы его можно было принять через Map.apply?

Ответы [ 2 ]

92 голосов
/ 31 марта 2011

Попробуйте это: Map(entities.map{e => e.id -> e}:_*)

Явный ввод его как varargs с использованием :_*, кажется, работает.

7 голосов
/ 31 марта 2011

Или это тоже должно работать:

entities.map{e => e.id -> e} toMap
...