Итак, я играю с использованием дженериков в Swift для создания KVO-подобных функций, но я получаю эту ошибку, и я просто не могу понять, почему:Generics 'не идентичен' ошибке
Это весь код:
struct Observable<T> {
typealias ValueType = T
typealias SubscriptionType = Subscription<T>
var value: ValueType {
didSet {
let event = ValueChangeEvent(oldValue, value)
self.subscriptions.notify(event)
}
}
var subscriptions = Subscriptions<SubscriptionType>()
init(_ value: ValueType) {
self.value = value
}
}
struct ValueChangeEvent<T> {
typealias ValueType = T
let oldValue: ValueType
let newValue: ValueType
init(_ o: ValueType, _ n: ValueType) {
oldValue = o
newValue = n
}
}
class Subscription<T> {
typealias ValueType = T
typealias HandlerType = (oldValue: ValueType, newValue: ValueType) ->()
let handler: HandlerType
init(handler: HandlerType) {
self.handler = handler
}
func notify(event: ValueChangeEvent<ValueType>) {
self.handler(oldValue: event.oldValue, newValue: event.newValue)
}
}
struct Subscriptions<T> {
typealias ValueType = T
typealias SubscriptionType = Subscription<T>
private var subscriptions = Array<SubscriptionType>()
mutating func add(handler: SubscriptionType.HandlerType) -> SubscriptionType {
let subscription = Subscription(handler: handler)
self.subscriptions.append(subscription)
return subscription
}
mutating func remove(subscription: SubscriptionType) {
var index = NSNotFound
var i = 0
for element in self.subscriptions as [SubscriptionType] {
if element === subscription {
index = i
break
}
i++
}
if index != NSNotFound {
self.subscriptions.removeAtIndex(index)
}
}
func notify(event: ValueChangeEvent<ValueType>) {
for subscription in subscriptions {
subscription.notify(event)
}
}
}
Любая помощь будет оценена.