如果包含在地图中,Scala地图会获得多个值

时间:2016-07-27 12:31:19

标签: scala

如果存在多个来自Map的值? 为此,我使用以下代码

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

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

2 个答案:

答案 0 :(得分:6)

我不确定这是你想要的,但我认为你对第二行的这种修改更具可读性:

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

答案 1 :(得分: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(" ")