I would like to write an extension to array of generic type in swift. This is how I tried to do this:
class Observer<Type> {
private(set) weak var observer: AnyObject?
private var listener: (_ newValue: Type) -> ()
init(observer: AnyObject, listener: @escaping (_ newValue: Type) -> ()) {
self.observer = observer
self.listener = listener
}
}
extension Collection where Iterator.Element == Observer<Type> {
func foo<Type>(value: Type) {
forEach { $0.listener(value) }
}
}
I would like to be able to execute function with parameter of this generic type. Is there any way to write such extension? Later this would look something like this:
let observers = [Observer<Int>]()
observers.forEach { $0.foo(4) }