我正在使用Scala Play框架来获取请求查询参数。
Play可以使用的唯一方法是:
val param: Option[String] = request.getQueryString("isXxxx")
然后我想做一些模式匹配,所以只有param是我想要继续的布尔类型,否则返回BadRequest。
只有param是Boolean类型的实例才能被处理,否则停止?那么我如何使用Scala模式匹配来实现这一目标呢?类似的东西:
param match {
case ??? => xxxService.xxx({here is Boolean})
case _ => BadRequest
}
不太确定关于它的语法不是None,而是布尔的类型。
答案 0 :(得分:1)
您可以按如下方式匹配选项:
param match {
case Some(x) => xxxService.xxx(x)
case None => BadRequest
}
如果您不知道类型,可以使用:
param match {
case x: Boolean => xxxService.xxx(x)
case _ => BadRequest
}
答案 1 :(得分:0)
您可以使用自定义提取器
来完成object boolean {
def unapply(s: String) = try {
Some(s.toBoolean)
} catch {
case e: IllegalArgumentException => None
}
}
并像这样匹配:
param match {
case Some(boolean(x)) => xxxService.xxx({here is Boolean})
case _ => BadRequest
}
在Scala库中没有类似的东西,但你必须自己提供它。