Mixins ve Traits arasındaki fark nedir?
Wikipedia'ya göre , Ruby Modüller bir tür benzer özelliklerdir. Nasıl yani?
Mixins ve Traits arasındaki fark nedir?
Wikipedia'ya göre , Ruby Modüller bir tür benzer özelliklerdir. Nasıl yani?
Yanıtlar:
ad 1. Mixins'de örnek değişkenleri tanımlayabilirsiniz. Özellikler buna izin vermez. Durum, sınıf oluşturularak sağlanmalıdır (= özellikler kullanılarak sınıf)
ad 2.
Ad çakışması olabilir. İki karışım ( MA
ve MB
) veya özellik ( TA
ve TB
), aynı tanım ile yöntemi tanımlar 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'
}
}
Mixins'de sınıf oluşturmadaki anlaşmazlıklar C mixins MA, MB
dolaylı olarak çözülür.
Class C mixins MA, MB {
bar():void {
foo();
}
}
Bu arayacak foo():void
gelenMA
Öte yandan, Özellikleri kullanırken sınıf oluşturmanın çakışmaları çözmesi gerekir.
Class C mixins TA, TB {
bar():void {
foo();
}
}
Bu kod çatışmayı artıracaktır (iki tanımı foo():void
).
ad 3. Bir yöntemin anlambilimi, bir özellikte mi yoksa özelliği kullanan bir sınıfta mı tanımlandığına bağlı değildir.
Başka bir deyişle, sınıfın Özellikler'den oluştuğu veya Özellikler kodunun sınıfa "kopyalandığı" önemli değildir.
Bu sayfalarda D Programlama dilindeki fark açıklanmaktadır.
Bu bağlamdaki karışımlar, anında kod oluşturulur ve daha sonra derleme sırasında kodun bu noktasına eklenir. Basit DSL'ler için oldukça kullanışlıdır.
Özellikler derleme zamanı harici değerlerdir (harici bir kaynaktan üretilen kod yerine). Fark incedir. Karışımlar mantık ekler, Özellikler derleme zamanı türü bilgileri gibi veriler ekler.
Ruby hakkında çok şey bilmiyorum, ama umarım bu biraz yardımcı olur.