2014-11-03 3 views
4

An Overview of the Collections API에서 오는 다음 코드를 스칼라에서 사용하려고합니다.scala.collection의 특성으로 인해 인스턴스가 생성되는 이유는 무엇입니까?

import collection._ 
scala> Traversable(1, 2, 3) 
res5: Traversable[Int] = List(1, 2, 3) 
scala> Iterable("x", "y", "z") 
res6: Iterable[String] = List(x, y, z) 
scala> Map("x" -> 24, "y" -> 25, "z" -> 26) 
res7: scala.collection.Map[String,Int] = Map(x -> 24, y -> 25, z -> 26) 
scala> SortedSet("hello", "world") 
res9: scala.collection.SortedSet[String] = TreeSet(hello, world) 
scala> IndexedSeq(1.0, 2.0) 
res11: IndexedSeq[Double] = Vector(1.0, 2.0) 

결과 이들 특성은 모두 구현의 인스턴스를 생성 apply 그 메소드를 호출 할 수 있음을 보여준다. 그러나 scala.collection.package 개체를 찾은 후에 나는 아무 것도 발견하지 못했습니다. 나는 그 특성을 그것의 서브 클래스에 묶고 내 프로그램으로 가져 오는 어딘가가 있어야한다고 생각한다. 누군가가 그것이 어디에 있는지 설명 할 수 있습니까?

답변

7

당신은 특성이 아닌 특성의 동반자 개체에 apply을 호출하고 있습니다. 예를 들어

, Traversable :

Traversable 객체는 상속 컴패니언 객체의 scaladoc에 apply를 클릭하면 볼 수 있음 GenericCompanion에서 메소드를 적용하십시오. source에 연결하면 구현 방법을 알 수 있습니다.

+0

Traversable의 부속 객체에는'apply' 메소드가 없습니까? – ssj

+0

있습니다. [두 번째 링크] (http://www.scala-lang.org/api/current/index.html#scala.collection.Traversable$)를보십시오. '가치 구성원'섹션에 나열된 두 번째 항목입니다. –

+0

오, 알겠습니다. 'apply' 메소드는'TraversableFactory'에서 확장됩니다. – ssj

관련 문제