믹스 인 대 특성
Mixins와 Traits의 차이점은 무엇입니까?
Wikipedia에 따르면 Ruby 모듈은 일종의 특성과 비슷합니다. 어떻게 요?
- 믹스 인은 상태 (전통적인) 특성을 포함하지 않을 수 있습니다.
- 믹스 인은 "암시 적 충돌 해결"을 사용하고 특성은 "명시 적 충돌 해결"을 사용합니다
- 믹스 인은 선형화에 달려 있으며 특성이 평평 해집니다.
ad 1. 믹스 인에서 인스턴스 변수를 정의 할 수 있습니다. 특성은 이것을 허용하지 않습니다. 상태는 클래스를 작성하여 제공해야합니다 (= 특성을 사용하는 클래스).
ad 2. 이름 충돌이있을 수 있습니다. 두 가지 믹스 인 ( MA
및 MB
) 또는 특성 ( TA
및 TB
)은 동일한 정의로 방법을 정의 foo():void
합니다.
Mixin MA {
foo():void {
print 'hello'
}
}
Mixin MB {
foo():void {
print 'bye'
}
}
Trait TA {
foo():void {
print 'hello'
}
}
Trait TB {
foo():void {
print 'bye'
}
}
믹스 인에서 작성 클래스의 충돌은 C mixins MA, MB
암시 적으로 해결됩니다.
Class C mixins MA, MB {
bar():void {
foo();
}
}
이 전화 foo():void
는MA
반면에 특성을 사용하는 동안 작문 클래스는 충돌을 해결해야합니다.
Class C mixins TA, TB {
bar():void {
foo();
}
}
이 코드는 충돌을 일으 킵니다 (의 두 정의 foo():void
).
ad 3. 메소드의 의미론은 그것이 특성에 정의되어 있는지 또는 특성을 사용하는 클래스에 정의되어 있는지에 의존하지 않습니다.
다시 말해, 클래스가 특성으로 구성되어 있는지 또는 특성 코드가 클래스에 "복사-붙여 넣기"되어 있는지는 중요하지 않습니다.
이 페이지는 D 프로그래밍 언어의 차이점을 설명합니다.
이 컨텍스트의 믹스 인은 코드를 즉시 생성 한 다음 컴파일하는 동안 코드의 해당 지점에 삽입됩니다. 간단한 DSL에 매우 편리합니다.
Traits are compile-time external values (rather than code generated from an external source). The difference is subtle. Mixins add logic, Traits add data such as compile-time type information.
Don't know much about Ruby, but hope this helps somewhat.
참고URL : https://stackoverflow.com/questions/925609/mixins-vs-traits
'IT' 카테고리의 다른 글
사용자 변수와 시스템 변수의 차이점은 무엇입니까? (0) | 2020.06.16 |
---|---|
배치 파일을 Windows 서비스로 실행 (0) | 2020.06.16 |
시계 방향으로 포인트를 정렬 하시겠습니까? (0) | 2020.06.16 |
안드로이드에서 스크롤보기 수직 및 수평 (0) | 2020.06.16 |
Devise 경로를 제거하여 가입하려면 어떻게해야합니까? (0) | 2020.06.16 |