Swift 2 ile basit bir gözlemci karışımı oluşturmaya çalışıyorum. İşte sadece alakalı Bölüm. Binary operator '===' cannot be applied to operands of type '_' and 'Self.T'
Protokolde hızlı jenerikler: '===', '_' ve 'Self.T' türündeki işlenenler için uygulanamaz.
sen bana açıklayabilir neden bu hata oluştuğu:
extension Observable{
mutating func removeObserver(observer:T){
let index = self.observers.indexOf{ $0 === observer }
if let _ = index{
self.observers.removeAtIndex(index)
}
}
}
Bu derleyici hata oluşturur:
protocol Observable{
typealias T
var observers:[T] { get set }
mutating func removeObserver(observer:T)
}
Ek süreye kullanmak mixin oluşturmak için?
Cevabınız için teşekkürler. Bunu kabul ettim, çünkü açıkçası benim soruma cevap oldu :) Ne yazık ki, sorunumu tamamen çözmüyor. Diyelim ki, "AnyObject" uygulayan bir "protokol" gözlemcisi tanımladım. Sonra 'Gözlenebilir' uygulayan bir 'ConcreteObservable 'sınıfı yaratıyorum. Ben typealias T = Observer'ı tanımlarım. Aşağıdaki hatayı alıyorum: 'Tür 'ConcreteObservable', 'Gözlemlenebilir' protokolüne uymuyor '' Gözlenebilir '' ' Protokolün iç içe türünü 'T' ve 'Muhtemelen amaçlanan eşleşmesi' T 'gerektirir (aka' Gözlemci ') uymuyor 'AnyObject' ' Bunu nasıl düzelteceğinizle ilgili bir fikriniz var mı? – hendra
@hendra: Sınıfınızı jenerik yapmak zorundasınız: class ConcreteObservable: Gözlemlenebilir {...} '. –
Hm, bu gerçekten bana mantıklı gelmiyor. Eğer bu sınıfı üzücü gibi genel olarak tanımlarsam, ConcreteObservable'ın başlatılması sırasında bir “Gözlemci” nin somut bir türünü ilan etmem gerekir. Ancak 'Gözlemciye' uyan herhangi bir nesne 'ConcreteObservable'ı gözlemleyebilmelidir. Ya da yanlış bir şey mi aldım? – hendra