この一般的なパターンは少し冗長に感じます。
if (condition)
Some(result)
else None
簡単にするために関数を使用することを考えていました:
def on[A](cond: Boolean)(f: => A) = if (cond) Some(f) else None
これにより、上の例は次のようになります。
on (condition) { result }
このようなものはすでに存在しますか?それともこれはやり過ぎですか?
この一般的なパターンは少し冗長に感じます。
if (condition)
Some(result)
else None
簡単にするために関数を使用することを考えていました:
def on[A](cond: Boolean)(f: => A) = if (cond) Some(f) else None
これにより、上の例は次のようになります。
on (condition) { result }
このようなものはすでに存在しますか?それともこれはやり過ぎですか?
最初のものを作成Option
し、条件でそれをフィルタリングできます。
Option(result).filter(condition)
またはcondition
関連していない場合result
Option(result).filter(_ => condition)
PartialFunction
コンパニオン オブジェクトとを使用できますcondOpt
。
PartialFunction.condOpt(condition) {case true => result}
使用法:
scala> PartialFunction.condOpt(false) {case true => 42}
res0: Option[Int] = None
scala> PartialFunction.condOpt(true) {case true => 42}
res1: Option[Int] = Some(42)
import scalaz._, Scalaz._
val r = (1 == 2) ? Some(f) | None
System.out.println("Res = " + r)