我有一个案例类QueryParams
如下:
case class QueryParams(
limit: Option[Integer] = None,
refresh: Option[Boolean] = None,
organisationalUnit: Option[String] = None)
这些值limit
,refresh
,organisationalUnit
实际上是作为播放应用程序的请求网址中的查询参数传递的。
我需要编写一个代码来检查请求URL是否包含organisationalUnit
的任何值,如果是,我需要抛出错误。如果不是,我需要继续进行进一步的操作。
任何人都可以帮助我
答案 0 :(得分:0)
Option
对于这类事情非常有用:
val params: QueryParams = ???
params.organizationalUnit.foreach(_ => throw new Exception("your error message"))
这样,只有在定义organizationalUnit
时才会抛出。您也可以表达如下:
for (_ <- params.organizationalUnit) {
throw new Exception("your error message")
}
或者:
if (params.organizationalUnit.isDefined) {
throw new Exception("your error message")
}
后者可能是最具可读性的,尽管根据某些编码风格可能不会被认为是非常惯用的。
答案 1 :(得分:0)
stefanobaghino的答案很好,但我更喜欢这种情况下的模式匹配:
params.organisationalUnit match {
case Some(_) => // processing
case _ => //logging
}
如果您需要其他值,则可以匹配整个实例
params match {
case QueryParams(Some(limit), Some(refresh), Some(organisationalUnit)) =>
case QueryParams(mayBeLimit, mayBeRefresh, Some(organisationalUnit)) =>
case _ =>
}