首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有隐式排序对象的SortedSet的Mixin SynchronizedSet

带有隐式排序对象的SortedSet的Mixin SynchronizedSet
EN

Stack Overflow用户
提问于 2013-04-12 11:21:36
回答 1查看 99关注 0票数 1

我似乎不能创建一个也混合在SynchronizedSet中的SortedSet。问题的症结在于SortedSet需要一个隐式排序对象。

代码语言:javascript
运行
复制
val orderByIdThenName = Ordering[(Int, String)].on[Foo](foo => foo.id -> foo.name)
new mutable.TreeSet[Foo]()(orderByIdThenName) // <- Works fine and is Ordered
new mutable.HashSet[Foo] with mutable.SynchronizedSet[Foo] // <- Mixin works
new mutable.TreeSet[Foo]()(orderByCount) with mutable.SynchronizedSet[Foo] // Fail!

最后一行给出错误"Object creation Object,因为scala.collection.SortedSetLike中的成员OrderingA未定义。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-12 11:45:02

这看起来是IntelliJ中的一个错误。我能够重现这个问题,并在编辑器中看到错误,但在编译时没有出现错误或警告。

因为没有给出orderByCount的定义,所以我假设它是这样的:

代码语言:javascript
运行
复制
val orderByCount = Ordering[Int].on[Foo](_.count)
new mutable.TreeSet[Foo]()(orderByCount) with mutable.SynchronizedSet[Foo]

更新:想出了一种通过覆盖ordering来消除IntelliJ中的错误的方法

代码语言:javascript
运行
复制
new mutable.TreeSet[Foo]()(orderByCount) with mutable.SynchronizedSet[Foo] {
    implicit override val ordering: Ordering[Foo] = orderByCount
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15962490

复制
相关文章

相似问题

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