Skip to content

Instantly share code, notes, and snippets.

@hartbit
Created June 26, 2015 21:18
Show Gist options
  • Save hartbit/20c10b8c89625161cfd9 to your computer and use it in GitHub Desktop.
Save hartbit/20c10b8c89625161cfd9 to your computer and use it in GitHub Desktop.
protocol ObserverType {
typealias Element
func onNext(value: Self.Element)
func onError()
func onCompleted()
}
protocol ObservableType {
typealias Observer : ObserverType
func subscribe(observer: Self.Observer)
}
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 {
typealias Element = Int
func subscribe(observer: Observer) {
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