수색…


통사론

  • 특성 유형 {selfId는 => / 다른 멤버를 참조 할 수 있습니다 selfId 경우는 this 뭔가를 의미 /}
  • 특성 유형 {selfId : OtherType => / * 다른 멤버는 selfId 를 사용할 수 있으며 OtherType 유형입니다. * /
  • 특성 유형 {selfId : OtherType2가있는 OtherType1 => / * selfId 유형은 OtherType1OtherType2 * /

비고

종종 케이크 패턴과 함께 사용됩니다.

간단한 자체 유형 예제

셀 유형은 특성과 클래스에서 혼합되어있는 구체적인 클래스에 대한 제약 조건을 정의하는 데 사용할 수 있습니다. 대한 다른 식별자를 이용하는 것도 가능하다 this 구문을 (유용한 내부 개체에서 참조되는 외부 개체 경우) 사용.

일부 오브젝트를 저장하려고한다고 가정합니다. 이를 위해 저장소의 인터페이스를 만들고 컨테이너에 값을 추가합니다.

 trait Container[+T] {
   def add(o: T): Unit
 }

 trait PermanentStorage[T] {
   /* Constraint on self type: it should be Container
    * we can refer to that type as `identifier`, usually `this` or `self`
    * or the type's name is used. */
   identifier: Container[T] =>

   def save(o: T): Unit = {
     identifier.add(o)
     //Do something to persist too.
   }
 }

이 방법은 동일한 객체 계층에 있지 않지만 Container 구현하지 않으면 PermanentStorage 를 구현할 수 없습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow