Bir işlevi bir işlev olarak bir parametre olarak geçirmem gerekiyor. Arabirim, genel bir a.k.a.'nın ilişkili bir türe sahiptir. Bunu yapmanın iyi bir yolunu bulamadım.Swift'de parametreyle ilişkili tür (genel protokol) protokol nasıl iletilir?
protocol IObserver : class {
typealias DelegateT
...
}
class Observer: IObserver {
typealias DelegateT = IGeneralEventsDelegate // IGeneralEventsDelegate is a protocol
...
}
func notify(observer: IObserver) { ... } // here I need a type for observer param
Bu çalışır bulundu: İşte benim kodudur
func notify<T: IObserver where T.DelegateT == IGeneralEventsDelegate>(observer: T) { ... }
, ama bu çok karmaşık gel. Bu paramı sınıf değişkenine kaydetmek istersem, bu fonksiyonu nedeniyle tüm sınıfı genel yapmam gerekir.
C++ geliştiriciyim ve Swift diline yeni geldiğim doğru, ama işlerin yapıldığı yol çok karmaşık ve kullanıcı dostu değil ... veya çok aptalım :)
yaptığı gibi Muhtemelen açık ilişkili türünü yapma
İlgili cevabımı buraya bakın ---> http://stackoverflow.com/a/34995198/5389500 – eonist