Skip to content

Instantly share code, notes, and snippets.

@hartbit
Created June 26, 2015 21:29
Show Gist options
  • Save hartbit/2c2613621d48e89af4dc to your computer and use it in GitHub Desktop.
Save hartbit/2c2613621d48e89af4dc to your computer and use it in GitHub Desktop.
protocol ObserverType {
typealias Element
func onNext(value: Self.Element)
func onError()
func onCompleted()
}
protocol ObservableType {
func subscribe<T : ObserverType>(observer: T)
}
class PrintObserver<T> : ObserverType {
typealias Element = T
func onNext(value: T) {
print("onNext \(value)")
}
func onError() {
print("onError")
}
func onCompleted() {
print("onCompleted")
}
}
class NumbersObservable : ObservableType {
func subscribe<T : ObserverType where T.Element == Int>(observer: T) {
observer.onNext(1)
observer.onNext(2)
observer.onNext(3)
observer.onCompleted()
}
}
let numbers = NumbersObservable()
let observer = PrintObserver<Int>()
numbers.subscribe(observer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment