首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用scalaz的视图边界

使用scalaz的视图边界
EN

Stack Overflow用户
提问于 2011-09-21 18:01:03
回答 1查看 211关注 0票数 5

我通过转换现有类来使用Monoid特性,这是我第一次进入scalaz。我试图实现的是在我的类类型参数上设置一个视图绑定,以确保它只能用于可以隐式转换为Monoid的类型。因此,我的(简化)类定义是:

代码语言:javascript
运行
复制
import scalaz._
import Scalaz._

case class Foo[T <% Monoid[T]](v: T)

new Foo(42)

编译这个简单的示例会给出编译器错误:

代码语言:javascript
运行
复制
error: No implicit view available from Int => scalaz.Monoid[Int].

在此之前,此视图绑定是根据我自己的自定义特性定义的,并隐式地从T转换到该特性,而且效果很好。

既然我已经把这个变成了黄玉,我又错过了什么呢?

谢谢,克里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-21 18:39:13

您应该使用上下文绑定,而不是视图绑定。

代码语言:javascript
运行
复制
import scalaz._
import Scalaz._

case class Foo[T : Monoid](v: T)

new Foo(42)

T : Monoid表示法意味着作用域中存在Monoid[T]类型的隐式。事实上,它会减少以下几个方面:

代码语言:javascript
运行
复制
case class Foo[T](v: T)(implicit ev: Monoid[T])

这被称为类型类模式,您可以阅读更多关于它的这里

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

https://stackoverflow.com/questions/7504428

复制
相关文章

相似问题

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