복붙노트

[SCALA] 밀폐 된 특성은 무엇입니까?

SCALA

밀폐 된 특성은 무엇입니까?

봉인 된 클래스는 '스칼라 프로그래밍'에 설명되어 있지만, 밀봉 특성이 없습니다. 어디 밀봉 특성에 대한 자세한 정보를 찾을 수 있습니까?

밀봉 특성이 봉인 된 클래스와 같은 경우 내가 알고 싶습니다? 하지 않을 경우 또는, 차이점은 무엇입니까? 때 그것은 밀봉 특성 (그리고하지 않을 경우)를 사용하는 것이 좋습니다?

해결법

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

    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. ==============================

    2.지금까지 봉인으로 그래, 간다. 그들은 물론 특성과 클래스 사이의 일반적인 차이점을 공유 할 수 있습니다.

    지금까지 봉인으로 그래, 간다. 그들은 물론 특성과 클래스 사이의 일반적인 차이점을 공유 할 수 있습니다.

    무트.

    당신이 봉인 된 클래스 X가있는 경우에, 당신은 X뿐만 아니라 서브 클래스를 확인해야합니다. 같은 밀폐 추상 클래스 X 또는 추상 클래스 X를 밀봉 할 수 있도록 밀봉 특성 X의 사실이 아니다, 그러나 그것은 단지 특성에 비해 거의 활용에 대한 방법 더 자세한입니다.

    형질 위에 추상 클래스를 사용의 가장 큰 장점은 매개 변수를받을 수 있다는 것입니다. 타입 클래스를 사용하는 경우 그 이점은 특히 관련이있다. 의 당신은 예를 들어, 정렬 된 트리를 구축하고자한다고 가정 해 봅시다. 당신이 쓸 수 있습니다 :

    sealed abstract class Tree[T : Ordering]
    

    하지만 당신은이 작업을 수행 할 수 있습니다 :

    sealed trait Tree[T : Ordering]
    

    상황에 맞는 범위 (볼 경계) 이후 암시 적 매개 변수를 사용하여 구현됩니다. 특성 매개 변수를 수신 할 수 감안할 때, 당신은 할 수 없습니다.

    개인적으로, 나는 밀봉 특성을 선호하고 어떤 특별한 이유가 나 밀폐 된 추상 클래스를 사용하게하지 않는 한 그것을 사용할 수 있습니다. 그리고 같은 종류의 클래스를 사용하여, 나는 미묘한 이유에 대해 이야기하고 있지 않다, 그러나에 - 네 - 얼굴 이유로 당신은 무시할 수 없다.

  3. ==============================

    3.매일-스칼라 블로그에서 :

    매일-스칼라 블로그에서 :

  4. ==============================

    4.또한 나는 사양을 지적 할 필요를 느낄 :

    또한 나는 사양을 지적 할 필요를 느낄 :

  5. ==============================

    5.간단히:

    간단히:

    더 자세한 내용은 스칼라의 밀봉 특성에 대한 모든 것

  6. from https://stackoverflow.com/questions/11203268/what-is-a-sealed-trait by cc-by-sa and MIT license