olarak uygulanamıyor. Başlığı another question üzerinden kırdığımda, alakalı görünen farklı bilmecelere rastladım.Temsil tipi, üye türü
error: overriding type Peer in trait Fenced with bounds >: Nothing <: Sys[this.Peer];
type Peer has incompatible type
def makeFence[S <: Sys[S]] = new Fenced { type Peer = S#Peer }
^
Neden: hata şöyledir Nerede
trait Sys[S <: Sys[S]] {
type Peer <: Sys[Peer]
}
trait Fenced {
type Peer <: Sys[Peer]
}
def makeFence[S <: Sys[S]] = new Fenced { type Peer = S#Peer }
: Bu onlardan biri mi? gerçekten gösterim türü karakteriyle Ben sorunları çözmez, Rex'in cevabı Fenced
nesne yapılandırılmasını mümkün kılarken
(ayrıca önemli değildi, Sys
kendinden tip _:S =>
eklemeye çalıştık) Bir tür projeksiyon kullanırken kaybolmak (S#Peer
). Daha zor kısıtlamalar getiren başka bir senaryo ile geldim; Hala neden aradığınızı kısıtlamaları tamamen emin değilim
trait Test[S <: Sys[S]] {
def make[T <: Sys[T]](): Unit
make[S#Peer]()
}
error: type arguments [S#Peer] do not conform to method make's type
parameter bounds [T <: Sys[T]]
make[S#Peer]()
^
Temel problemin “A [B <: Sys [B]]' ye (iyi) karşı olduğunu, A özelliği (A tipi B <: Sys [B]} '(yani her şey). Ama ben gerçekten tip üyelerle çalışmam gerekiyor, benim durumumda tip parametrelerini tanıyamıyorum. –
Neyi başarmaya çalışıyorsunuz? 'S # Peer',' S''den Peer'' dir, fakat 'Fenced'' akranın _its_' Peer'' S'' olmasını ister, bu da (yüzey seviyesi) uyumsuzluğu üretir. Mantıksal olarak uyumsuz olup olmadığı sanırım türleri basit takma adlar veya sahiplik beyanları olarak görüp görmediğinize bağlıdır. Ne yazık ki, Scala bu konuda tamamen tutarlı değil. Sadece "Çitli" bir "Sys" olan bir türü var mı? –
@RexKerr - niyet açık değilse üzgünüm. Bağlantılı sorular tüm bağlamı verir. Temel olarak, ihtiyacım olan şey (bence), birbirinden atıfta bulunulan iki bağlantılı sistemi, dış sistemden geçmeme izin veren bir şekilde tanımlamaktır; S <: Sys [S] ve sadece dış sistemin tip üyelerini kullanarak diğer akran sistemini tam olarak yerleştirebilme. Buradaki tip projeksiyonlarının sınırlarını zorluyorum. Bu soru, dış sistemin bir tüketici içindeki akran türünü yeniden diriltmenin mümkün olmadığını söyleyerek bunu açıklamaya çalışır. –