scala: How to pass an expanded list as varargs into a method?

26,442

Solution 1

Try this: Map(entities.map{e => e.id -> e}:_*)

Explicitly typing it as a varargs using :_* seems to work.

Solution 2

Or this should work too:

entities.map{e => e.id -> e} toMap
Share:
26,442
dsg
Author by

dsg

Updated on March 31, 2020

Comments

  • dsg
    dsg about 4 years

    When creating a Map in scala, I call Map(entities.map{e => e.id -> e}), and I get:

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

    This is because the signature for Map.apply is: def apply[A, B](elems: (A, B)*): CC[A, B], which requires a varargs style argument.

    Is there a way to convert the IndexedSeq so that it can be accepted via Map.apply?