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".parseIntScala的类型推断通常是从左到右的,所以这实际上更短:
"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
复制相似问题