gpt4 book ai didi

java - 如何从 Option[Map[String,Seq[String]]] 中知道是否包含键?

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:05 25 4
gpt4 key购买 nike

我想知道 request.body.asFormUrlEncoded 是否包含 deviceId

val formValues=request.body.asFormUrlEncoded
val number = formValues.get("mobile").head
var deviceId ="deviceIdNotFound"
if(condtion) //thats the problem
deviceId= formValues.get("deviceId").head

Option[Map[String,Seq[String]]]有没有conatins或任何其他函数的方法?

最佳答案

我强烈建议您不要使用 formValues.get("whatever"),部分原因是语法非常困惑——看起来您正在调用 get 带有一个关键参数(例如在 map 上),而实际上你是在 Option 上调用 get (这是一个不安全的操作——你应该远离从 getOption 基本上总是),然后 apply 在生成的 map 上(也是不安全的)。这种困惑是 Scala 的错,而不是你的错,但你仍然希望避免介入其中。

相反,您可以在 Option 上使用 exists 并在 map 上使用 contains。这是一个稍微简化的示例:

val containsKey = formValues.exists(_.contains(key))

仅当 Option 为非空并且它包含的映射具有键时,这将返回 true

更好的方法是避免像这样的 if 语句:

val os: Option[Seq[String]] = for {
m <- formValues
v <- m.get(key)
} yield v

os.foreach { v => \\ do something with the value }

如果原始 Option 为非空且 map 包含该 key 。

关于java - 如何从 Option[Map[String,Seq[String]]] 中知道是否包含键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24204907/

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