Scala: carte une carte à la liste de tuples

J'ai essayé d'utiliser la Carte.carte de convertir une carte dans une Liste de Tuples.
Toutefois, cela échoue. J'ai fait les expériences suivantes:

val m = Map(("a" -> 1), ("b" -> 2))
         //> m  :     scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2)
val r1 = m.map{ case (k,v) => v}                //> r1  : scala.collection.immutable.Iterable[Int] = List(1, 2)
def toTuple[A,B](a:A,b:B) = (a,b)               //> toTuple: [A, B](a: A, b: B)(A, B)
//val r2: List[Tuple2[_,_]] = m.map(e => (e._1,e._2))
val r3 = m.map(e => toTuple(e._1,e._2))         //> r3  : scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2)
val r4 = m.toSeq                                //> r4  : Seq[(String, Int)] = ArrayBuffer((a,1), (b,2))

Avis, comment une Liste est générée par des éléments uniques (r1), mais une Carte est produite pour les n-uplets (r3). Pas même en forçant le type de travail (r2). Seulement un appel explicite à Seq fait (r4) Donc ma question est, pourquoi/comment fonctionne la Carte.carte "automagiquement" créer une nouvelle Carte et non sur une liste, par exemple? En fait, quelle est le type de retour déterminée (Seq, Liste, etc.)

Quel est le problème avec m.toList? Notez également que la cartographie sur une collection renvoie un autre recueil du même type, de sorte que vous ne pouvez pas vraiment de retour une liste de cartographie sur un Map, sauf si vous appelez .toList sur elle.
Rien n'est mauvais. Voir le commentaire ci-dessous.

OriginalL'auteur user2051561 | 2015-02-27