我解析了三个请求参数,所有这些参数都包含在Option
类型中。如果这些选项中的任何一个是None
,那么我想返回400错误。如何检查这些返回值是否为None
?Scala中的多个选项值
6
A
回答
14
为什么不只是这样?
if (o1.isEmpty || o2.isEmpty || o3.isEmpty) BadRequest("Foo")
Alternativeley取决于您的实施,您可能在某种集合中有您的选择。然后,你可以使用exists
if (parsedRequestParameters.exists(_.isEmpty)) BadRequest("Foo")
你可能会喜欢第三种选择,如果你想要做的事与你选择的内容:
val response = for {
v1 <- o1
v2 <- o2
v3 <- o3
} yield <some response depending on the values of o1..o3>
response getOrElse BadRequest("something wasn't specified")
2
我喜欢与他们一起工作作为一个集合选项的[T]
scala> Seq(Option(1), Option(5), None)
res0: Seq[Option[Int]] = List(Some(1), Some(5), None)
scala> val result = res0.exists(_.isEmpty)
result: Boolean = true
0
也可以使用压缩,但它会包裹元件基本成嵌套成对的SEQ是不容易变平以便重新使用
Some(1) zip Some(2) == List((1,2))
Some(2) zip Some(2) zip Some(3) == List(((1,2),3))
Some(1) zip Some(2) zip None == List()
,或者你可以做exists
这样的事情
val options = Seq(Some(p1), Some(p2), Some(p3),None)
val parameters = options.flatten
if(parameters.length == options.length) do something with parameters
1
出于完整性超过Option
的集合,也考虑forall
,如下,
val a = Array(Some(3), None, Some(7))
a.forall(_.nonEmpty)
res: false
a.forall(!_.isEmpty)
res: false
a.forall(_.isDefined)
res: false
和
val b = Array(Some(3), Some(5), Some(7))
b.forall(_.nonEmpty)
res: true
b.forall(_.isDefined)
res: true
6
另一种可能性,为完整性而添加:
(o1, o2, o3) match {
case(Some(p1), Some(p2), Some(p3)) => Ok // Do stuff with p1, p2, p3
case _ => BadRequest
}
相关问题
- 1. 在scala中分析带有scopt的多个值的选项
- 2. Scala/Android项目中的“多个scala库”
- 3. 如何在Scala中结合选项值?
- 4. 多个选项的快速选择值
- 5. 多个选项值的jQuery选择器
- 6. jQuery选择多个值的选项
- 7. 减少scala中的选项?
- 8. Lazily coalesce Scala中的选项
- 9. Scala中的编码选项
- 10. 禁用选项中的多个选项中的一个选项
- 11. 从一个选择选项值中获取多个值。 PHP HTML
- 12. POST单个选项的多个值
- 13. PHP更新多个选择选项值
- 14. Javascript显示多个选择选项值
- 15. 给选择选项多个_post值
- 16. InternetExplorer.Application:选择多个“选项值”字段
- 17. 如何从多个选择选项中获取多个选定的值php codeigniter?
- 18. 在多个选项中恢复选项texte值
- 19. 从JAVA/JSP中选择hashtable键值中的多个选项
- 20. 如何在Scala中匹配多个值?
- 21. index.php内的多个选项值
- 22. 引用多个值的选项元素
- 23. 升压程序选项:相同的值的多个选项
- 24. 风格多个选项值:代码工作的几个选项值仅
- 25. 使用Scala选项
- 26. 从单个选择选项列表中返回多个值PHP
- 27. 提升程序选项多个值的选项
- 28. 另一个选项对象内的Scala选项对象
- 29. 如何在React JS中获得多个选定的选项值?
- 30. 在CakePHP中选择包含多个值的选项标签
您使用的路由器是什么?有可能你可以简单地使这三个参数成为强制性的。 – 2014-10-06 11:49:43