我解析了三個請求參數,所有這些參數都包含在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