2017-11-08 5 views
0

にオプションパラメータから値を取得します。私は、パラメータScalaの

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

を持っていると私は、被験者が非nullである場合にのみ、必要機能を適用したいです。以下のような

何か:

require(StringUtils.isNotBlank(subject)) 
+0

'Option'が空の場合はどうしますか?あなたはその機能を実行したくないのですか? –

答えて

0

必要な関数呼び出しを変更する必要があり、次の

require(StringUtils.isBlank(subject.get)) 

.get方法には、subjectOptionが運ぶという文字列を返します。

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 

それはNoneを取得する場合にのみgetが例外をスローします。例:

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 
0

私はあなたがその道を行くことができると思います。

subject.map(s => if(StringUtils.isNotBlank(s)) require(s) else s)