2

私が扱っているJavaライブラリはnull、エラーを返します。慣用的な言い方はありますか:

val x:Option[T]

if(x.isEmpty)
 false
else
 x.get.isFooable()

Scala: Boolean to Optionの回答を見てきました。それらは私が望むものに近いですが、より慣用的な方法があります:

x.isDefined && x.get.isFooable()
4

4 に答える 4

10
x.exists(_.isFooable) // Returns false if x is None

trueのデフォルトとしてNone使用する場合は、x.forall

于 2013-11-08T06:05:52.930 に答える
5

オプションを処理するには多くの方法があります。最も慣用的なのは、オプションへのリフト計算です。

val x = Option(true)
x map { if(_) 10 else 20 }

パターン マッチングよりも条件分岐に Option[Boolean] を使用する場合は、次のようにします。

c match {
  case Some(true)  => println("True")
  case Some(false) => println("False")
  case None        => println("Undefined")
}

そしてあなたのケース:

x.isDefined && x.get.isFooable()

少しはっきり:

x map { _.isFooable } getOrElse false

最後に ScalaOptionユーティリティ メソッドを使用します。

x exists { _.isFooable }
于 2013-11-08T05:28:55.697 に答える
3
x map (_.isFooable) getOrElse false
于 2013-11-08T05:28:48.150 に答える
1

あなたがしたい

x map (_.isFooAble()).getOrElse(false)
于 2013-11-08T05:29:06.243 に答える