Comment puis-je utiliser une for-comprehension qui renvoie quelque chose que je peux assigner à une carte ordonnée? Ceci est une simplification du code je:Scala pour la compréhension renvoyant une carte ordonnée
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: ListMap[String, Bar] =
for {
foo <- myList
} yield (foo.name, foo.bar)
je dois vous assurer que mon résultat est une carte ordonnée, dans les tuples de commande sont renvoyés par la pour compréhension orale.
Avec ce qui précède, je reçois l'erreur:
error: type mismatch;
found : scala.collection.mutable.Buffer[(String,Bar)]
required: scala.collection.immutable.ListMap[String,Bar]
foo <- myList
Cette compile:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: Predef.Map[String, Bar] =
{
for {
foo <- myList
} yield (foo.name, foo.bar)
} toMap
mais je suppose la carte ne sera pas commandé, et je besoin d'un appel toMap explicite.
Comment puis-je y parvenir?
Pourriez-vous expliquer ce que signifie l'ajout: \ _ \ *? – xiaohan2012
Dans le cas où vous ne l'avez jamais compris; C'est juste une syntaxe spéciale pour dire "insérer ce truc dans une méthode qui prend vargs", c'est-à-dire 'public void foo (String ...)' – habitats