Ответ 1
Нет, это невозможно сейчас, хотя это часть манифеста Generics, поэтому может быть что-то, что команда Swift рассмотрит для будущей версии языка.
Тем не менее, несколько неудовлетворительным компромиссом было бы использованиеОбщие аргументы по умолчанию
Общие параметры могут быть предоставлены возможность предоставлять стандартные аргументы, которые будут использоваться в случаях, когда аргумент типа не является указанный тип и вывод типа не могут определить аргумент типа. Например:
public final class Promise<Value, Reason=Error> { ... } func getRandomPromise() -> Promise<Int, Error> { ... } var p1: Promise<Int> = ... var p2: Promise<Int, Error> = p1 // okay: p1 and p2 have the same type Promise<Int, Error> var p3: Promise = getRandomPromise() // p3 has type Promise<Int, Error> due to type inference
typealias
:
class MyManager<T> {}
typealias MyManagerDefault = MyManager<NSObject>
let defaultManager = MyManagerDefault()
Не так легко, как просто сказать MyManager()
, но он отображается рядом с MyManager
в автозаполнении, что довольно удобно.