[SCALA] 밀폐 된 특성은 무엇입니까?
SCALA밀폐 된 특성은 무엇입니까?
봉인 된 클래스는 '스칼라 프로그래밍'에 설명되어 있지만, 밀봉 특성이 없습니다. 어디 밀봉 특성에 대한 자세한 정보를 찾을 수 있습니까?
밀봉 특성이 봉인 된 클래스와 같은 경우 내가 알고 싶습니다? 하지 않을 경우 또는, 차이점은 무엇입니까? 때 그것은 밀봉 특성 (그리고하지 않을 경우)를 사용하는 것이 좋습니다?
해결법
-
==============================
1.봉인 특성은 선언과 같은 파일을 확장 할 수 있습니다.
봉인 특성은 선언과 같은 파일을 확장 할 수 있습니다.
그들은 종종 열거 형에 대한 대안을 제공하는 데 사용됩니다. 그들은 단지 하나의 파일에 확장 될 수 있기 때문에, 컴파일러는 가능한 모든 하위 유형을 알고 그것에 대해 추론 할 수 있습니다.
선언과 함께 예를 들어 :
sealed trait Answer case object Yes extends Answer case object No extends Answer
경기가 철저하지 않은 경우 컴파일러는 경고를 방출합니다 :
scala> val x: Answer = Yes x: Answer = Yes scala> x match { | case No => println("No") | } <console>:12: warning: match is not exhaustive! missing combination Yes
가능한 아형의 수는 유한 미리 알고있는 경우 그래서 당신은 밀폐 된 특성 (또는 봉인 추상 클래스)를 사용합니다. 더 많은 예제는 목록과 옵션 구현을 볼 수있다.
-
==============================
2.지금까지 봉인으로 그래, 간다. 그들은 물론 특성과 클래스 사이의 일반적인 차이점을 공유 할 수 있습니다.
지금까지 봉인으로 그래, 간다. 그들은 물론 특성과 클래스 사이의 일반적인 차이점을 공유 할 수 있습니다.
무트.
당신이 봉인 된 클래스 X가있는 경우에, 당신은 X뿐만 아니라 서브 클래스를 확인해야합니다. 같은 밀폐 추상 클래스 X 또는 추상 클래스 X를 밀봉 할 수 있도록 밀봉 특성 X의 사실이 아니다, 그러나 그것은 단지 특성에 비해 거의 활용에 대한 방법 더 자세한입니다.
형질 위에 추상 클래스를 사용의 가장 큰 장점은 매개 변수를받을 수 있다는 것입니다. 타입 클래스를 사용하는 경우 그 이점은 특히 관련이있다. 의 당신은 예를 들어, 정렬 된 트리를 구축하고자한다고 가정 해 봅시다. 당신이 쓸 수 있습니다 :
sealed abstract class Tree[T : Ordering]
하지만 당신은이 작업을 수행 할 수 있습니다 :
sealed trait Tree[T : Ordering]
상황에 맞는 범위 (볼 경계) 이후 암시 적 매개 변수를 사용하여 구현됩니다. 특성 매개 변수를 수신 할 수 감안할 때, 당신은 할 수 없습니다.
개인적으로, 나는 밀봉 특성을 선호하고 어떤 특별한 이유가 나 밀폐 된 추상 클래스를 사용하게하지 않는 한 그것을 사용할 수 있습니다. 그리고 같은 종류의 클래스를 사용하여, 나는 미묘한 이유에 대해 이야기하고 있지 않다, 그러나에 - 네 - 얼굴 이유로 당신은 무시할 수 없다.
-
==============================
3.매일-스칼라 블로그에서 :
매일-스칼라 블로그에서 :
-
==============================
4.또한 나는 사양을 지적 할 필요를 느낄 :
또한 나는 사양을 지적 할 필요를 느낄 :
-
==============================
5.간단히:
간단히:
더 자세한 내용은 스칼라의 밀봉 특성에 대한 모든 것
from https://stackoverflow.com/questions/11203268/what-is-a-sealed-trait by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 간단한 빌드 도구 (SBT)와 인 IntelliJ와 디버깅 스칼라 코드 (0) | 2019.11.06 |
---|---|
[SCALA] 어떻게 하드 코딩없이 케이크 패턴 의존성 주입을해야합니까? (0) | 2019.11.05 |
[SCALA] 대규모 데이터 세트에 대한 COGROUP를 사용하는 방법 (0) | 2019.11.05 |
[SCALA] 어떻게 명시 적 위치에 의해서가 아니라 주어진 조건 / 상태가되지 슬라이스 가능하게하는 스칼라리스트를 확장하려면 (0) | 2019.11.05 |
[SCALA] 스칼라 dropWhile 당량 (0) | 2019.11.05 |