私はScalaを学んでいますが、Scalaz ValidationNel
を使用してFail Slow
メカニズムを使用しましたが、使用方法を理解することは本当に難しいです。私はこれらのブログを読んでいる:Blog1、私もこのStackOverflowの投稿を読んでいる:StackOverflowしかし、それは実際に非機能的なプログラマーのために理解することは困難です。誰かがScalaのValidationNel
にエラーを累積する方法の簡単な例を提供できますか?この例についての説明もあまりにも役立つでしょう。これが何をしているか、あなたがScalazはValidationNelを使用して遅くなります
val sumV: ValidationNEL[String, Int] = for {
a <- 42.successNel[String]
b <- "Boo".failNel[Int]
c <- "Wah wah".failNel[Int] // by defn of flatMap, can't get here
} yield a + b + c
をリンクしたブログの例を使用して
私はOOPのバックグラウンドから来ており、あなたの例を 'if(condition)'ステートメントでcorelatedしようとしています。 – Explorer
'val yes = 3.14.successNel [文字列] 'は、ValidationNEL [String、Int]オブジェクトのインスタンスを作成しています。型パラメータ(StringとInt)は失敗と成功の場合をそれぞれ指します。この種類のオブジェクトには、リフト上のタイプの空でないリスト(この場合はString)または右のタイプの単一インスタンス(Int)が含まれます。このタイプのオブジェクトには '| @ |'ビヘイビアがエンコードされています。そのビヘイビアは - 別のValidationNelをとり、オブジェクトの実際の値が何であるかを確認します。 – Ren
その場合は、適切な引数を取り、それを関数で実行し、その結果をSuccessオブジェクトに入れます。それとも両方とも失敗ですか、それとも失敗ですか?その場合は、Failureを取得してリストに組み込み、そのリストをFailureオブジェクトに配置します。 – Ren