如果我申请(i:Int),我怎么能有地图?

时间:2014-12-21 21:51:11

标签: scala scala-collections

我有一个包含许多元素的类E。我希望E实现Iterable或类似的Collections接口。我可以检索任何任意元素。

换句话说:我有一个支持apply(n: Int)的类,给出元素n。我想支持地图和类似的方法。我怎么能这样做?

更新:换句话说,我希望它拥有收藏夹界面

1 个答案:

答案 0 :(得分:2)

您无法单独使用apply,因为所有非Stream集合都需要一个大小,但如果您可以实现applylength,则可以继承IndexedSeq您将获得为您实施的大多数常规收集方法。

例如,以下是如何使用包装数组的集合来完成它:

class ArrayCollection[+E]( items : Array[E] ) extends IndexedSeq {

  override def apply(n : Int) : E = items(n)

  override def length : Int = items.length

}
相关问题