Protokolün genel dizisini kullanmanın bir yolu var mı? Örneğin , Swift sınıfındaki protokol dizisini kullanma 'generic
/* I want to use protocol like below,
* but I can't because protocol is not concrete
* so cannot make array of it */
class MyClass<T where T:MyProtocol, T:[MyProtocol]> {
let result: T
}
protocol MyProtocol {
init(with: String)
}
class SpecialThing: MyProtocol {
let appleWatch: AppleWatch
init(with: String) {
self.appleWatch = AppleWatch(with)
}
}
class SampleClass {
func test {
typealias listCallback = (MyClass<[SpecialThing]>, NSError) ->()
typealias oneCallback = (MyClass<SpecialThing>, NSError) ->()
}
}
bir nesne veya protokol alt sınıfına ait dizi olabilir. Sanırım "typealias" bana yardım etmiyor.
Bununla
Ben genel tür T MyProtocol ve dizisi olarak belirtilen sahip olmak mümkündür sanmıyorum MyProtocol aynı zamanda. – Lachezar
Sanırım öyle. MyClass'ta genel nesneyi başlatmak istiyorum. Her şeyi araştırdı ama hala çözüm bulamıyor. – macaron
Bildiğim kadarıyla mümkün değil. Oldukça bariz ama bildiğim tek “çözüm”, sınıf MyClass { sonuç verir: [T] } ' –