我想知道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]]]
答案 0 :(得分:10)
我强烈建议您不要使用formValues.get("whatever")
,部分原因是语法非常混乱 - 看起来您正在使用关键参数调用get
(例如在地图上) ),当你真正在get
上调用Option
时(这是一个不安全的操作 - 你应该基本上始终远离get
Option
)然后{{ 1}}在结果地图上(也是不安全的)。这个混乱是斯卡拉的错,不是你的错,但你仍然想避免踩到它。
相反,您可以在地图上apply
和exists
上使用Option
。这是一个略微简化的例子:
contains
仅当val containsKey = formValues.exists(_.contains(key))
非空且其包含的地图具有密钥时,才会返回true
。
更好的方法是避免Option
这样的声明:
if
如果原始val os: Option[Seq[String]] = for {
m <- formValues
v <- m.get(key)
} yield v
os.foreach { v => \\ do something with the value }
非空且地图中包含该密钥,我们最终会得到一个Option
,其中包含key
指向的值。