gpt4 book ai didi

scala - 在 Scala 中,仅当存在可选值时才将项目添加到 Map

转载 作者:行者123 更新时间:2023-12-01 08:23:25 27 4
gpt4 key购买 nike

我是 scala 的新手,我正在尝试以一种干净的方式做这样的事情。

我有一个接受几个可选参数的方法。我想创建一个 map ,并且只有在可选参数有值的情况下才将项目添加到 map 中。这是一个虚拟示例:

def makeSomething(value1: Option[String], value2: Option[String], value3: Option[String]): SomeClass = {
val someMap: Map[String, String] =
value1.map(i => Map("KEY_1_NAME" -> i.toString)).getOrElse(Map())
}

在上面的这种情况下,我们正在做我想做的事,但前提是我们只关心 value1 - 我希望对所有可选值都这样做,并将它们放入映射中。我知道我可以做一些蛮力的事情:

def makeSomething(value1: Option[String], value2: Option[String], value3: Option[String]): SomeClass = {
// create Map
// if value1 has a value, add to map
// if value2 has a value, add to map
// ... etc
}

但我想知道 scala 是否有任何功能可以帮助我清理它。

提前致谢!

最佳答案

您可以创建一个 Map[String, Option[String]] 然后使用 collect 删除空值并从它们的包装中“提取”当前值 选项:

def makeSomething(value1: Option[String], value2: Option[String], value3: Option[String]): SomeClass = {
val someMap: Map[String, String] =
Map("KEY1" -> value1, "KEY2" -> value2, "KEY3" -> value3)
.collect { case (key, Some(value)) => key -> value }

// ...
}

关于scala - 在 Scala 中,仅当存在可选值时才将项目添加到 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com