我想知道 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
(这是一个不安全的操作——你应该远离从 get
上 Option
基本上总是),然后 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/