형식 이름에서 암시하는 내부 클래스와 함께 유용합니다. 예를 들어 A Tour of Scala: Inner Classes에 정의 된 그래프 및 노드 클래스를 참조하십시오. 값에 대한 존재하는 부량은 불특정 그래프의 노드 유형을 쓰는데 사용됩니다.
type SomeNode = g.Node forSome { val g: Graph }
두 그래프를 같은 그래프에서 가져와야하는 인수로 사용하는 방법을 원할 때 유용 할 수 있습니다. 당신이
val g1 = new Graph
val g2 = new Graph
다음 이러한
somethingWithTwoNodes(g1.newNode, g1.newNode)
somethingWithTwoNodes(g2.newNode, g2.newNode)
를 컴파일 할 경우
그런 N.에서 재귀 어떤 종류가있다 생각하기 때문에 2.7 메소드 정의를 채택하지 않도록
는
def somethingWithTwoNodes[N <: g.Node forSome { val g: Graph }](n1: N, n2: N) = (n1,n2)
주
하지만 이들은 없습니다
somethingWithTwoNodes(g1.newNode, g2.newNode)
somethingWithTwoNodes(g2.newNode, g1.newNode)
싱글 톤 특성은 일반적인 방식으로 정의되지 않았습니다. 즉, 클래스 파일이 없습니다. Any, AnyVal, AnyRef 및 Null 유형과 같습니다. 이 다른 유형과 함께 src/compiler/scala/tools/nsc/symtab/Definitions.scala
에 정의되어 있지만 매우 유용한 정보라고 생각됩니다. 그것은 또한 특성이나 클래스를 정의 할 때 그것을 혼합 할 수 없다는 것을 의미하는 최종 특성 인 이상한 짐승입니다. 실제로 컴파일러가 다른 유형과 고유하다고 말하는 유형의 인자입니다.
싱글 톤 외에도 : http://stackoverflow.com/questions/292274/what-is-an-existential-type – Dario