복붙노트

[SCALA] 왜 하나는 해시 대신 점으로 스칼라 형 멤버를 선택 하는가?

SCALA

왜 하나는 해시 대신 점으로 스칼라 형 멤버를 선택 하는가?

스칼라에서는 클래스에서 유형을 선택하는 구문은 클래스에서 무엇을 선택 다르다. 그 전 사용하는 대신에, 도트의 선택 연산자 해시. 왜 그런 겁니까?

예 : 우리가 같은 클래스가 있다면 ...

class Example {
    type Foo = String
}

왜 우리는이 같은 클래스의 유형을 선택합니까 ...

val example:Example#Foo = "1"

대신이 같은?

val example:Example.Foo = "1"

해결법

  1. ==============================

    1.예 # 푸 유형의 투사라고 입력 예의 둘러싸는 인스턴스의 모든 유형의 푸 일치합니다. 당신이 유형 Example.Foo을 작성하는 경우, 컴파일러는 예라고만을 포위 푸 형식을 참조 할 값을 찾아 (및 입력하지) 않습니다. 이것은 종종 단일 객체의 맥락에서 사용된다.

    예 # 푸 유형의 투사라고 입력 예의 둘러싸는 인스턴스의 모든 유형의 푸 일치합니다. 당신이 유형 Example.Foo을 작성하는 경우, 컴파일러는 예라고만을 포위 푸 형식을 참조 할 값을 찾아 (및 입력하지) 않습니다. 이것은 종종 단일 객체의 맥락에서 사용된다.

    예를 들어 :

    object MyEnum extends Enumeration {
      val EnumValue = Value
    }
    
    val e: MyEnum.Value = MyEnum.EnumValue
    

    스칼라를 사용합니다. 앞의 식별자가 유형 또는 값 ... 따라서 #으로 하나 해석 될 수 있기 때문에 유형 예측을 위해,이 혼란으로 이어질 것입니다. 그 참고 @kassens의 쓰기로, 자바는 그 점에 입력 한 전망을 가지고있다.

  2. from https://stackoverflow.com/questions/6676048/why-does-one-select-scala-type-members-with-a-hash-instead-of-a-dot by cc-by-sa and MIT license