[SCALA] '이' ''와 어떤 유형 / 차이 명시 자기 참조
SCALA'이' ''와 어떤 유형 / 차이 명시 자기 참조
나는 명시 적으로 입력 된 자기 참조의 사용을 이해 :
trait T {
self : T2 =>
...
}
본문에, 자기는이 별칭입니다하지만 T2와 함께보다 정확한 타입 T가 있습니다.
지금, 나는 코드를 본 적이 :
trait T {
self =>
...
}
즉, 추가 입력 정보가 명시 적 자기 참조입니다. 이 구성에서, 자기는 이것을 단지 별칭되지 않는 어떤 상황이있다?
해결법
-
==============================
1.그것은이의 별칭입니다.
그것은이의 별칭입니다.
첫 번째 예는 형질은 적절한 형태로 혼합 된 것을 보장하는 데 유용하고, 이러한 방법을 사용할 수있다.
당신은 이름 충돌로 내부 클래스를 외부 범위를 볼 수 있도록 할 때 두 번째 예는 유용합니다. 예를 들면 :
trait U { self => val name = "outer" val b = new AnyRef { val name = "inner" println(name) println(this.name) println(self.name) } }
U 인쇄와 그리고 새로운 AnyRef
inner inner outer
"자기"특별한 키워드 아니다 - 당신은 "바나나 =>"또는 당신이 원하는대로 사용할 수 있지만, 그것은 종종 규칙에 따라 사용됩니다.
이것은 일반적으로 외부 클래스와 같은 이름을 가진 많은 방법이 내부 클래스 (스크롤 내에서 텍스트 상자 등)에 많이 만들 스윙에 꽤, 돌발한다.
-
==============================
2.이 경우 자체에서 이런 말을하는 또 다른 방법입니다.
이 경우 자체에서 이런 말을하는 또 다른 방법입니다.
당신이 내부 클래스가 일어날 경우, 그러나, 내부 클래스 내부의이 내부 클래스가 될 것이다, 자기는 컨테이너 클래스가 될 것입니다.
즉, 유일한 차이 AFAIK입니다
from https://stackoverflow.com/questions/8073263/explicit-self-references-with-no-type-difference-with-this by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 튜플에 기능 콤비를 사용? (0) | 2019.11.09 |
---|---|
[SCALA] 스파크 : RDD 모든 가능한 조합의 생산 RDD [(X, X)] [X] (0) | 2019.11.09 |
[SCALA] `##`와`hashCode`의 차이점은 무엇입니까? (0) | 2019.11.09 |
[SCALA] JSON에 행 스파크 (0) | 2019.11.09 |
[SCALA] 빈 / 널 필드 값 새로운 Dataframe 만들기 (0) | 2019.11.09 |