2016-07-27 81 views
1

如何从地图中获取多个值(如果存在)? 为此,我使用下面的代码斯卡拉地图在地图中包含若干值

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

但也许有更好的解决方案吗?

+0

也许是为了理解? – rethab

回答

6

我不知道这是你想要的,但我认为你的第二行的这种修改是一个小更可读:

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

正如评论所说,一个用于理解能得到这份工作完成了。根据个人的喜好,任何一种方法都可能是首选:

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(" ")