如果映射中包含,Scala映射将获取多个值

如果映射中包含,Scala映射将获取多个值,scala,Scala,如果存在多个值,如何从映射中获取这些值? 为此,我使用以下代码 val params:mutable.Map[String,String]=mutable.Map.empty Seq(params.lift("Name"),params.lift("Surname")).flatten.mkString(" ") 但也许有更好的解决方案?我不确定这是否是您想要的,但我认为您第二行的这一修改更具可读性: Seq("Name", "Surname").flatMap(params.lift(_))

如果存在多个值,如何从映射中获取这些值? 为此,我使用以下代码

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

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

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

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

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

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

正如一篇评论中所建议的那样,一个理解的过程也可以完成这项工作。根据个人喜好,两种方法均可优先选择:

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(" ")
导入scala.collection.mutable
def multiget[K,V](映射:scala.collection.map[K,V],键:K*):Seq[V]=
为了{
钥匙“史密斯”)
多重获取(数据,“名称”,“姓氏”).mkString(“”)

正如一条评论中所建议的那样,一种理解的方法也可以完成工作。根据个人喜好,两种方法都可以优先选择:

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(" ")
导入scala.collection.mutable
def multiget[K,V](映射:scala.collection.map[K,V],键:K*):Seq[V]=
为了{
钥匙“史密斯”)
多重获取(数据,“名称”,“姓氏”).mkString(“”)

也许是理解的a?也许是理解的a?