首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Map on Scalaz验证失败

Map on Scalaz验证失败
EN

Stack Overflow用户
提问于 2011-09-22 22:37:25
回答 2查看 1.6K关注 0票数 18
代码语言:javascript
复制
import scalaz._
import Scalaz._

"abc".parseInt

这将返回一个Validation[NumberFormatException, Int]。有没有一种方法可以在故障端应用函数(例如toString)来获取Validation[String, Int]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 00:42:42

MAB[M[_,_], A, B]上定义了一对方法<-::->,只要存在Bifunctor[M],它们就会映射到任何M[A, B]的左侧和右侧。Validation恰好是一个双函数,所以你可以这样做:

代码语言:javascript
复制
((_:NumberFormatException).toString) <-: "123".parseInt

Scala的类型推断通常是从左到右的,所以这实际上更短:

代码语言:javascript
复制
"123".parseInt.<-:(_.toString)

并且需要更少的注释。

票数 19
EN

Stack Overflow用户

发布于 2011-09-22 23:06:28

在FailProjection上有一个函数器。所以你可以这样做

代码语言:javascript
复制
v.fail.map(f).validation

(无法键入为FailProjection,请验证以退出它)

另一个选择

代码语言:javascript
复制
v.fold(f(_).failure, _.success)

两者都有点冗长。也许更熟悉scalaz的人能想出更好的办法。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7516613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档