解決策は、if-else の明らかなパターン マッチングに基づいていないことを期待しています。オプションのmap
との組み合わせのように、それを行うためのより自然な方法があるはずです。getOrElse
質問する
145 次
3 に答える
6
Validation
fold
副作用を生成するために採用できる方法があります。
v.fold(e => println("Ouch, we got "+e), a => println("Yay!! We got "+a))
于 2012-09-14T14:04:41.817 に答える
1
Validation.fold
回答を文字で埋めています...
于 2012-09-14T14:04:34.880 に答える
1
完全を期すために、副作用の後に Validation を操作したい場合があります。
object Test {
import scalaz._
import syntax.bifunctor._
import syntax.validation._
def f(s: String) = { println(s"Err ${s}"); s }
def g(i: Int) = { println(s"Int ${i}"); i }
def m(x: Validation[String, Int]) = x bimap (f, g)
def n(x: Validation[String, Int]) = f _ <-: x :-> g _
def main(args: Array[String]) {
val v = 17.success[String]
val w = "nope".failure[Int]
println(m(v) map (i => i + 1))
println(m(v)); println(m(w))
println(n(v)); println(n(w))
}
}
または、顔のあるオペレーターが好きかもしれません。顔文字演算子は機能コミュニティで名前を持っていますか? 私の現在の気分を考えると、mope のように emoperator を試してみますが、それは狭すぎるかもしれません。それとも「ロロップ」?しかし、 x :-> f のような使い方は明らかに「顔の表情」です。
于 2012-09-16T01:18:55.820 に答える