【发布时间】:2014-01-04 21:01:56
【问题描述】:
我感兴趣的是 Scala 是否提供了操作异构集合的便捷方式?
尤其是变体类型和多键多映射。
我知道第一个可以构建在嵌套的 Either 类 Either[Either[A, B], C] 之上,第二个可以构建在嵌套的 Map 类 Map[A, Map[B, Set[C]]] 之上,但是直接执行更新/删除操作似乎太复杂了每次我需要它们(而且我经常需要它们)。
所以我正在寻找一个现成的解决方案。或者也许标准库中有一种方便简单的方法?无论如何,如果你能建议第三方框架,也可以。
【问题讨论】:
-
异构集合通常是代码异味的标志——如果你需要在同一个集合中保留不同的类型,那么它们可能应该有一些共同的接口——即这应该通过多态来实现。地图的地图称为表格 - Guava provides an API for this。我不知道 Scala 有类似的 API。
-
@Boris the Spider,不熟悉的请不要回答。问题显然是关于 Scala,而不是 Java。还将变体类型(这是在许多语言中实现多态性的一种众所周知的方式)视为“代码气味”似乎很有争议。
-
我没有回答,我评论了。
-
@BoristheSpider 异构集合的良好用途包括基于索引参数化列表元素、基于键参数化地图元素或泛化方法签名。不过,我同意它可以是一种钝器。
标签: scala collections