Şu anda benim karakterim, B
ve R
'un aynı genel türüne sahip olmaktan başka gerçek bir kullanımı olmayan ekstra tip T'ye sahip. Üçüncü tip bir parametre kullanmadan Scala jeneriklerinde aynı türden nasıl sorulur?
trait GenericBuilder[T <: Any, B <: Builder[T], R <: Result[T]]
T
ortadan kaldırmak için bir yol olup olmadığını merak beyanı basitleştirmek için.
DÜZENLEME: Ben Builder
veya Result
kod kontrol yok - onlar dışında bazı java eserler dan çekilir.
trait Builder {
type T
}
trait Result {
type T
}
trait GenericBuilder[B <: Builder, R <: Result] {
val w: B.T =:= R.T
}
:
Sanırım bu = = = = kullanımdan kaldırıldı. – goral
Kullanımdan kaldırıldığının farkında değilim. Scalaz === daha iyidir, ancak sadece ihtiyaç duyulan kullanım durumlarından birine sahipseniz önemlidir; =: = örnek için yeterlidir. – lmm
Sözdizimi doğru mu? Dış tipten sonra bir "=" olmalı mı? Ayrıca türleri nereye yerleştirmeliyim? Eğer onları sınıfın dışına çıkarırsam, "yanlış üst beyanname" hatası alırım. Onları sınıfın içine yerleştirmek belli ki bir şey yapmıyor. Ayrıca Builder benim özellik ismim ancak tür takma adı gizleniyor gibi görünüyor? – NSF