import scalaz._
import Scalaz._
"abc".parseInt
Run Code Online (Sandbox Code Playgroud)
这将返回一个Validation[NumberFormatException, Int].有没有办法可以在故障方面应用函数(例如toString)来获取Validation[String, Int]?
Apo*_*isp 19
只要有一个方法<-:,:->就MAB[M[_,_], A, B]可以在该地图的左侧和右侧定义一对方法.碰巧是一个bifunctor,所以你可以这样做:M[A, B]Bifunctor[M]Validation
((_:NumberFormatException).toString) <-: "123".parseInt
Run Code Online (Sandbox Code Playgroud)
Scala的类型推断通常从左向右流动,因此实际上更短:
"123".parseInt.<-:(_.toString)
Run Code Online (Sandbox Code Playgroud)
并且需要较少的注释.
Did*_*ont 11
FailProjection上有一个仿函数.所以你可以做到
v.fail.map(f).validation
Run Code Online (Sandbox Code Playgroud)
(无法输入FailProjection,验证以摆脱它)
另外
v.fold(f(_).failure, _.success)
Run Code Online (Sandbox Code Playgroud)
两者都有点冗长.也许更熟悉scalaz的人可以想出更好的东西
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |