2016-07-27 1 views
1

Comment obtenir plusieurs valeurs de la carte si elles existent? Pour cela, j'utiliser le code suivantScala carte obtenir plusieurs valeurs si contient dans la carte

val params:mutable.Map[String,String]=mutable.Map.empty 
Seq(params.lift("Name"),params.lift("Surname")).flatten.mkString(" ") 

Mais peut-être il y a une meilleure solution?

+0

Peut-être un moyen de compréhension? – rethab

Répondre

6

Je ne suis pas sûr que c'est ce que vous voulez, mais je pense que cette modification de votre deuxième ligne est un peu plus lisible:

Seq("Name", "Surname").flatMap(params.lift(_)).mkString(" ") 
2

Comme suggéré dans un commentaire, une pour la compréhension peut faire le travail fait aussi bien. Selon le goût personnel, l'une ou l'autre approche peut être préférée:

import scala.collection.mutable 

def multiget[K, V](map: scala.collection.Map[K, V], keys: K*): Seq[V] = 
    for { 
    key <- keys 
    value <- map.get(key) 
    } yield value 

val data = mutable.Map("Name" -> "John", "Surname" -> "Smith") 
multiget(data, "Name", "Surname").mkString(" ")