스칼라 열거 이해
스칼라 열거 클래스를 이해하지 못한다고 말해야합니다. 문서에서 예제를 복사하여 붙여 넣을 수는 있지만 무슨 일이 일어나고 있는지 전혀 알 수 없습니다.
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
import WeekDay._
- 무슨 뜻
type WeekDay = Value
이고 왜 써야합니까? - 왜 그렇
val Mon = Value
습니까? 그게 무슨 뜻입니까? - 왜
WeekDay
객체 를 가져와야 합니까? 과, - 내가 쓸 때
val day = WeekDay.Mon
왜 타입WeekDay.Value
이 아닌 타입WeekDay
인가?
이 Enumeration
특성에는 Value
열거의 개별 요소를 나타내는 유형 멤버가 있습니다 (실제로 내부 클래스이지만 차이는 중요하지 않습니다).
따라서 object WeekDay
해당 유형 멤버를 상속합니다. 행 type WeekDay = Value
은 유형 별명 일뿐 입니다. 로 다른 곳에서 가져온 후에는 다음과 import WeekDay._
같은 유형을 사용할 수 있기 때문에 유용합니다 .
def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
대신 최소 버전은 다음과 같습니다.
object WeekDay extends Enumeration {
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
당신은하지 않습니다 할 의 내용을 가져올 수 object WeekDay
있지만, 당신은 유형을 사용해야합니다 WeekDay.Value
및 개인 회원을 한정. 따라서 예제는
def isWorkingDay(d: WeekDay.Value) = ! (d == WeekDay.Sat || d == WeekDay.Sun)
두 번째 질문은의 의미에 관한 것입니다 val Mon, ... = Value
. 의 구현을 조사하지 않으면 실제로 혼란 스럽습니다 Enumeration
. 이것은 타입의 할당이 아닙니다! 대신 보호 호출하는 같은 이름의 방법 , Value
유형의 구체적인 인스턴스를 반환합니다 Value
.
val a, b, c = foo
스칼라로 작성할 수 있고 각 값 a
, b
에 c
대해 메소드 foo
가 반복해서 호출됩니다. Enumeration
이 트릭을 사용하여 각 카운터가 증가하도록 내부 카운터를 증가시킵니다.
Scala API 문서를 열고를 Enumeration
클릭 Visibility: All
하면 해당 메소드가 나타납니다.
참고 URL : https://stackoverflow.com/questions/11067396/understanding-scala-enumerations
'Programming' 카테고리의 다른 글
html5 입력 유형 번호로 부동 소수점 및 소수 구분 기호를 처리하는 방법 (0) | 2020.07.14 |
---|---|
Maven에서 외부 속성 파일을 읽는 방법 (0) | 2020.07.14 |
Firebase에서 모든 노드 데이터를로드하지 않고 노드의 자식 수를 얻는 방법이 있습니까? (0) | 2020.07.14 |
Spring Java Config : 런타임 인수로 프로토 타입 범위의 @Bean을 어떻게 작성합니까? (0) | 2020.07.14 |
INSERT INTO vs SELECT INTO (0) | 2020.07.14 |