首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala中的多个选项值

Scala中的多个选项值
EN

Stack Overflow用户
提问于 2014-10-06 11:33:56
回答 5查看 7.2K关注 0票数 8

我正在解析三个请求参数,所有这些参数都封装在Option类型中。如果这些选项中的任何一个是None,那么我想返回一个400错误。如何检查这些返回值中是否有None类型

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-10-06 11:42:39

为什么不就这样?

代码语言:javascript
复制
if (o1.isEmpty || o2.isEmpty || o3.isEmpty) BadRequest("Foo")

另外,取决于您的实现,您可能在某种集合中有您的选项。然后你可以使用exists

代码语言:javascript
复制
if (parsedRequestParameters.exists(_.isEmpty)) BadRequest("Foo")

你可能喜欢的第三种选择是,如果你想用你的选项的内容做些什么:

代码语言:javascript
复制
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")
票数 18
EN

Stack Overflow用户

发布于 2015-10-13 12:14:33

另一种可能性是为完整性而增加的:

代码语言:javascript
复制
(o1, o2, o3) match {
  case(Some(p1), Some(p2), Some(p3)) => Ok // Do stuff with p1, p2, p3
  case _ => BadRequest
}
票数 18
EN

Stack Overflow用户

发布于 2014-10-06 12:04:19

我更喜欢使用它们,就像使用OptionT集合一样。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26215349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档