我解析了三個請求參數,所有這些參數都包含在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. jQuery選擇多個值的選項
- 5. 多個選項的快速選擇值
- 6. Scala中的編碼選項
- 7. 禁用選項中的多個選項中的一個選項
- 8. 給選擇選項多個_post值
- 9. Javascript顯示多個選擇選項值
- 10. InternetExplorer.Application:選擇多個「選項值」字段
- 11. 如何從多個選擇選項中獲取多個選定的值php codeigniter?
- 12. 引用多個值的選項元素
- 13. 如何在Scala中匹配多個值?
- 14. 風格多個選項值:代碼工作的幾個選項值僅
- 15. 使用Scala選項
- 16. 從單個選擇選項列表中返回多個值PHP
- 17. 提升程序選項多個值的選項
- 18. 另一個選項對象內的Scala選項對象
- 19. 如何在React JS中獲得多個選定的選項值?
- 20. 在CakePHP中選擇包含多個值的選項標籤
- 21. 處理Scala的選項[T]
- 22. PHP多個隱藏值選項
- 23. 傳遞多個選項值在PHP
- 24. PHP下拉以「兩個值」列表中爲每個「選項」和多項選擇
- 25. 同一個項目中的多個scala版本
- 26. Scala選項映射到另一個選項
- 27. Javascript從多個選擇選項框中獲取值
- 28. 如何從angularjs中的多選框中選擇選項值?
- 29. Excel:根據多個選項的多個列的值的總和值
- 30. 在asp.net中的select2多選項上設置多個選定值C#
您使用的路由器是什麼?有可能你可以簡單地使這三個參數成爲強制性的。 – 2014-10-06 11:49:43