定义具有抽象类型的特征的排序,该排序仅针对兼容类型进行编译?
假设以下特征:
trait A {
type B
}
是否有任何方法可以使其成为有序类型,其中只有具有相同 B 的 A 可以进行比较,并且这是在编译时强制执行的?
Assume the following trait:
trait A {
type B
}
Is there any way of making this into an ordered type, where only A's with the same B's can be compared, and this is enforced in compile time?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,通过隐式(使用类型别名使事情变得更加干燥),
示例 REPL 会话,
编辑...
感谢 scala.math.LowPriorityOrderingImplicits 中的隐式定义,此定义足以为我们提供对应的Ordering类型的类实例。这允许我们将 A 与需要排序的类型一起使用,例如。 scala.collection.SortedSet,
Yes, via an implicit (with a type alias to make things a little more DRY),
Sample REPL session,
Edit ...
Thanks to the implicit definitions in scala.math.LowPriorityOrderingImplicits this defintion is sufficient to provide us with corresponding Ordering type class instances. This allows us to use A with types which require Orderings, eg. a scala.collection.SortedSet,
将
B
作为A
的参数怎么样?How about making
B
a parameter ofA
?