RxSwift가 제공하는 여러가지 타입중에서 ObservableType이란 프로토콜이 있다
여기엔 RxSwift의 근간을 이루는 다양한 메서드들이 선언되어 있다.
새로운 Observable을 생성하는 메서드, 방출되는 요소를 필터링 하거나, 여러 Observable을 하나로 합치는 메서드도 있다.
RxSwift에선 이런 메서드들을 연산자라고 부른다.
Operators는 여러 특징이 있다.
대부분의 연산자는 Observable상에서 동작하고, 새로운 Observable을 리턴한다.
Observable을 리턴하기 때문에 두개 이상의 연산자를 연달아 호출할 수 있다.
let bag = DisposeBag()
Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9])
//여기
.subscribe { print($0) }
.disposed(by: bag)
연산자는 보통 subscribe 앞에서 호출한다.
그래야 구독자로 전달되는 최종 데이터가 우리가 원하는 데이터가 된다.
Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9])
.take(5)
.subscribe { print($0) }
.disposed(by: bag)
//next(1)
//next(2)
//next(3)
//next(4)
//next(5)
//completed
take연산자는 sourceObservable이 방출하는 요소중에서 파라미터로 지정한 개수만큼 방출하는
새로운 Observable을 생성한다
쉽게 말해 5개의 요소만 전달.
Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9])
.take(5)
.filter{ $0.isMultiple(of: 2)}
.subscribe { print($0) }
.disposed(by: bag)
//next(2)
//next(4)
//completed
filter 연산자로 필터링할 수 있다
연산자는 필요에 따라 얼마든지 연결해서 사용 가능하다.
하지만 순서에 유의해야한다.