我有一个参数
case class Envelope(subject: Option[String]) {
}
并且我想仅在主题非空时才应用require函数。
如下所示:
require(StringUtils.isNotBlank(subject))
答案 0 :(得分:0)
您应该将require函数调用更改为以下
require(StringUtils.isBlank(subject.get))
.get
方法返回subject
Option
携带的字符串。
答案 1 :(得分:0)
你也可以试试这个:
case class Envelope(subject: Option[String])
def check(en: Envelope): Boolean = {
require(en.subject.isDefined)
true
}
它会更精细,您无需导入StringUtils
。
要从Option
获取值,您应该选择getorElse
。在这里,我们可以定义变量的默认值。例如:
def check(str: Option[String]): String = {
str.getOrElse("")
}
scala> check(None)
res1: String = ""
scala> check(Some("Test"))
res2: String = Test
只有get
会在获得None
时抛出异常。例如:
def check(str: Option[String]): String = {
str.get
}
scala> check(Some("Test"))
res2: String = Test
scala> check(None)
java.util.NoSuchElementException: None.get
at scala.None$.get(Option.scala:347)
at scala.None$.get(Option.scala:345)
at check(<console>:24)
... 48 elided
答案 2 :(得分:0)
我认为你可以这样:
subject.map(s => if(StringUtils.isNotBlank(s)) require(s) else s)