1
如何從地圖中獲取多個值(如果存在)? 爲此,我使用下面的代碼斯卡拉地圖在地圖中包含若干值
val params:mutable.Map[String,String]=mutable.Map.empty
Seq(params.lift("Name"),params.lift("Surname")).flatten.mkString(" ")
但也許有更好的解決方案嗎?
如何從地圖中獲取多個值(如果存在)? 爲此,我使用下面的代碼斯卡拉地圖在地圖中包含若干值
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(" ")
正如評論所說,一個用於理解能得到這份工作完成了。根據個人的喜好,任何一種方法都可能是首選:
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(" ")
也許是爲了理解? – rethab