2014-12-21 33 views
-2

我有一個類E與一些元素。我想E執行Iterable或類似的Collections界面。我可以檢索任意的元素。如果我申請(我:詮釋),我怎麼能有地圖?

換句話說:我有一個支持apply(n: Int)的類,給元素n。我想支持地圖和類似的方法。我怎樣才能做到這一點?

UPDATE:換句話說,我想它有收藏接口

+2

我懷疑有一個籠統的回答。你想支持哪些方法? ('map','flatMap','withFilter'?)你的類代表什麼,這些方法應該做什麼? –

+0

不知道爲什麼downvote!首先,我認爲這是可能的:查看更新。更重要的是,誰曾經聽說過低調,因爲沒有辦法做到這一點? – SRobertJames

+0

如果你想「支持」map,你可以定義一個map方法嗎?如果你想實現某些特定性狀的方法(例如'Traversable'或'Seq'),擴展這個特徵(儘管我知道沒有「Collections接口」)。 (你沒有被低估,因爲沒有辦法做到這一點,但是因爲你的問題很不明確,並且不清楚你是否嘗試過最基本,最明顯的事情) – lmm

回答

2

您不能單獨apply做到這一點,因爲所有的非流收藏需要的尺寸,但如果你能實現applylength然後您可以繼承IndexedSeq,並且您將爲您實現大多數常規收集方法。

舉例來說,這裏是你如何能與wrapps陣列集合做到這一點:

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

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

    override def length : Int = items.length 

} 
相關問題