import scalaz._
import Scalaz._
"abc".parseInt
这将返回一个Validation[NumberFormatException, Int]
。有没有一种方法可以在故障端应用函数(例如toString
)来获取Validation[String, Int]
发布于 2011-09-23 00:42:42
在MAB[M[_,_], A, B]
上定义了一对方法<-:
和:->
,只要存在Bifunctor[M]
,它们就会映射到任何M[A, B]
的左侧和右侧。Validation
恰好是一个双函数,所以你可以这样做:
((_:NumberFormatException).toString) <-: "123".parseInt
Scala的类型推断通常是从左到右的,所以这实际上更短:
"123".parseInt.<-:(_.toString)
并且需要更少的注释。
发布于 2011-09-22 23:06:28
在FailProjection上有一个函数器。所以你可以这样做
v.fail.map(f).validation
(无法键入为FailProjection,请验证以退出它)
另一个选择
v.fold(f(_).failure, _.success)
两者都有点冗长。也许更熟悉scalaz的人能想出更好的办法。
https://stackoverflow.com/questions/7516613
复制相似问题