"단품 다형성"이란 무엇이며 어떻게 이점을 얻을 수 있습니까?
그의 이야기에서 간단한 손쉬운 릭 히키는 "에 대해 이야기 다형성 일품 요리 (비디오에 30:00에 대해)". 같은 맥락에서 그는 Haskell의 Type Class 와 Clojure의 Multi-Methods (및 프로토콜) 도 언급합니다 .
나는 이러한 개념에 익숙하지 않기 때문에 단순성 을 달성하려고 할 때 유용성을 이해하고 싶습니다 . 저는 특히 Scala 에서이 개념의 예나 쇼케이스에 관심이 있습니다.
당신이 취할 수 일품 다형성을 같이 수요에 다형성 .
Clojure 커뮤니티는 Clojure가 다중 다형성 전략을 지원한다는 사실 때문에 다형성 이라는 용어를 자랑스럽게 생각합니다 . 그들 중 일부는 다음과 같습니다.
상속 다형성
이것은 Java에서 사용하는 다형성 전략입니다. Clojure는이를 프록시로 지원합니다. Java interop을 수행 할 때 유용합니다.
실험 계획안
Clojure에 대한 프로토콜은 Haskell에 대한 TypeClass와 같습니다.
다중 방법
프로토콜은 첫 번째 인수의 유형에 따라 다형성 디스패치를 제공하지만 다중 메소드는 메소드의 (모든) 인수의 모든 기능을 기반으로 디스패치 할 수있는 훨씬 더 유연합니다.
다형성 a la carte 는 "귀하의 경우에 가장 적합한 다형성 전략을 선택하십시오. 모두 도구 상자에 있습니다."
TypeClass
암시 적을 사용하여 Scala에서 패턴을 구현할 수 있습니다 . 실제 사례를 원한다면 Scalaz 소스를 읽어보십시오 . Scala는 언어 수준에서 다중 방법을 지원하지 않지만 곧 출시 될 2.10 매크로의 도움으로 가능하다고 생각합니다.
이점에 관해서는 TypeClass 및 Multimethod와 같은 고급 다형성 전략이 표현식 문제를 해결하는 데 도움이 될 수 있습니다 .
"목표는 기존 코드를 다시 컴파일하지 않고 정적 유형 안전성 (예 : 캐스트 없음)을 유지하면서 데이터 유형에 새 케이스를 추가하고 데이터 유형에 대한 새 함수를 추가 할 수있는 경우에 따라 데이터 유형을 정의하는 것입니다."
BTW,이 질문은 하나의 StackOverflow 질문에 맞추기에는 너무 큽니다. 제 제안은 이러한 개념에 익숙해지면 그 유용성을 이해하게 될 것입니다.
'Development Tip' 카테고리의 다른 글
WordPress로 URL에 추가 변수를 전달하는 방법 (0) | 2020.11.16 |
---|---|
부트 스트랩 : 더 넓은 입력 필드 (0) | 2020.11.16 |
모든 브라우저에 대한 기본 시간 초과 설정은 어디에서 찾을 수 있습니까? (0) | 2020.11.15 |
Pandas 데이터 프레임에 상수 값이있는 열 추가 (0) | 2020.11.15 |
텍스트 처리-Python 대 Perl 성능 (0) | 2020.11.15 |