Почему это не работает (даже если контейнер соответствует уникальному протоколу.) И как будет выглядеть наилучшее обходное решение?Swift 2.0: невозможно передать общий параметр в качестве параметра
protocol Unique {
var uniqueId: String {get}
}
struct Container <T>: Unique {
typealias UnderlyingObject = T
var object: UnderlyingObject
var uniqueId: String
}
func myFunc(protocolClosure: (Unique, Unique) -> Unique) {
print("...")
}
func problemStartsHere<T,S,U>(paramClosure: (Container<T>, Container<S>) -> Container<U>) {
myFunc(paramClosure)
}
Я думаю, что это проблема ковариации/контравариантности общего типа, однако я не пользователь Swift, поэтому я не могу быть более конкретным. – Dai