我有一个包含许多元素的类E
。我希望E实现Iterable
或类似的Collections接口。我可以检索任何任意元素。
换句话说:我有一个支持apply(n: Int)
的类,给出元素n。我想支持地图和类似的方法。我怎么能这样做?
更新:换句话说,我希望它拥有收藏夹界面
答案 0 :(得分:2)
您无法单独使用apply
,因为所有非Stream集合都需要一个大小,但如果您可以实现apply
和length
,则可以继承IndexedSeq
您将获得为您实施的大多数常规收集方法。
例如,以下是如何使用包装数组的集合来完成它:
class ArrayCollection[+E]( items : Array[E] ) extends IndexedSeq {
override def apply(n : Int) : E = items(n)
override def length : Int = items.length
}