2014-12-21 4 views
-2

많은 수의 클래스가있는 E 클래스가 있습니다. E가 Iterable 또는 유사한 Collections 인터페이스를 구현하고 싶습니다. 임의의 요소를 검색 할 수 있습니다.신청 (i : Int)을 신청하면 어떻게 할 수 있습니까?

즉, 요소 ​​n을 부여하기 위해 apply(n: Int)을 지원하는 클래스가 있습니다. 지도 및 이와 유사한 방법을 지원하고 싶습니다. 어떻게해야합니까?

UPDATE : 즉, 나는 컬렉션 인터페이스를 가지고 그것을 싶습니다

+2

내가 일반적인 응답이 의심한다. 어떤 방법을 지원하고 싶습니까? ('map','flatMap','withFilter'?) 클래스가 나타내는 것은 무엇입니까?이 메소드들은 어떻게해야합니까? –

+0

왜 downvote! 첫째, 나는 그것이 가능하다고 믿습니다 : 업데이트를보십시오. 더 중요한 것은 누가 그것을 할 수있는 방법이 없기 때문에 downvoting을 들어 본 적이 있습니까? – SRobertJames

+0

''map'을 "지원"하고 싶다면 ... 당신은'map' 메소드를 정의합니까? 특정 특성 (예 :'Traversable' 또는'Seq')의 메소드를 구현하려면 해당 특성을 확장하십시오 (아는 한 "Collections 인터페이스"는 없습니다). (당신은 그것을 할 방법이 없기 때문에 downvoted되지 않습니다,하지만 귀하의 질문이 매우 불분명하고 당신이 가장 기본적인, 분명한 것들조차 시도했는지 확실하지 않기 때문에) – 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 

}