Tuple Déballage de la Carte, à des Opérations de
Il m'arrive fréquemment de travailler avec des Listes, Seqs, et les Itérateurs de Tuples et aimerais faire quelque chose comme ce qui suit,
val arrayOfTuples = List((1, "Two"), (3, "Four"))
arrayOfTuples.map { (e1: Int, e2: String) => e1.toString + e2 }
Cependant, le compilateur ne semble jamais d'accord avec cette syntaxe. Au lieu de cela, j'arrive à la fin de l'écriture,
arrayOfTuples.map {
t =>
val e1 = t._1
val e2 = t._2
e1.toString + e2
}
Qui est tout simplement ridicule. Comment puis-je contourner ce problème?
Vous devez vous connecter pour publier un commentaire.
Un travail est d'utiliser
case
:J'aime la tupled fonction; c'est à la fois pratique et pas des moindres, le type de sécurité:
Pourquoi n'utilisez-vous pas
Si besoin les paramètres de temps multiples, ou un ordre différent, ou dans une structure imbriquée, où l' _ ne fonctionne pas,
semble être une courte, mais sous une forme lisible.
_.toString + _
et il veut manipuler plus compréhensible noms det._1
ett._2
.arrayOfTuples map {case (i, s) => i.toString + s}
est, bien sûr, plus pratique. Cependant, vous devez vous poser la question que vous avez, pour obtenir la réponse dont vous avez besoin. 🙂Int + String
de cartographie. 😉Une autre option est
Noter qu'avec
Dotty
(fondation deScala 3
), paramètre untupling a été prolongée, permettant à une telle syntaxe:où chaque
_
se réfère pour les associés tuple de la partie.