从scala中的Option参数获取值

时间:2017-11-08 11:46:58

标签: scala

我有一个参数

case class Envelope(subject: Option[String]) {
}

并且我想仅在主题非空时才应用require函数。

如下所示:

require(StringUtils.isNotBlank(subject))

3 个答案:

答案 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)