Operators


RxSWIFTは、観測可能なデータをよりよく利用し、管理することができる.
様々なオペレータを提供します.
オペレータが多すぎるので、よく使うかもしれないものをタイプ別に整理したいと思います.
すべての内容は以下の正式なドキュメントにありますので、添付してください.
ReactiveX - Operators
Creating
//Create
//가장 기본적인 생성 메서드로 아래와 같은 예시로 Observable을 생성 가능하다.
Observable.create() { emitter in
		//아래와 같이 데이터를 발생
		emitter.onNext("Something")

		return Disposables.create()
}

//Just
//단일의 이벤트를 방생시켜,
//간결하게 한개만 데이터를 넣고 싶을 때 사용
Observable.just("just one")

//From
//한번에 여러개의 이벤트를 전달한다. ex) 배열 등
Observable.from([1, 2, 3])
Transforming
オペレータは、発生したイベントの値を変更できます.
let numberOb = Observable<Int>.just(10)
//이벤트 값을 String으로 변경해줌
let stringMap = numberOb.map { String($0) }

stringMap.subscribe(onNext: { event in
	// event는 String으로 내려오게 됨
	print(event)
}).disposed(by: disposeBag)
Filtering
イベントを選択的に励起するオペレータ
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9 10]

Observable.from(numbers)
			.filter{ $0.isMultiple(of: 2) }
			.subscribe { print($0) }
//2의 배수만 필터가 되어 아래와 같이 출력된다.

//next(2)
//next(4)
//next(6)
//next(8)
//next(10)
Combining
1つ以上の観測可能な
//추후 다룰 내용이지만 아직 값이 없는 Observable 형태
let subject1 = PublishSubject()
let subject2 = PublishSubject()

//of 연산자는 여러개의 값/Observable을 받을 수 있는 생성 연산자
Observable.of(subject1, subject2)
	//받아진 Observable을 merge로 결합	
   .merge()
   .subscribe {
       print($0)
   }

subject1.on(.Next(10))
subject1.on(.Next(11))
subject1.on(.Completed)
subject2.on(.Next(22))
subject2.on(.Completed)

//아래와 같이 차례대로 수행됨
Next(10)
Next(11)
Next(22)
Completed
Error
do try catchと似ていて、
可視性はエラーではなく、可視性<>タイプを返します.
let observable = Observable<Int>
    .create { observer -> Disposable in
        observer.onNext(1)
        observer.onNext(2)
        observer.onError(NSError(domain: "", code: 100, userInfo: nil))
        observer.onError(NSError(domain: "", code: 200, userInfo: nil))
        return Disposables.create { }
}

observable
		//에러가 발생하면 NSError.code의 이벤트를 발생시킨다.
    .catchError { .just(($0 as NSError).code) }
    .subscribe { print($0) }
    .disposed(by: disposeBag)

/* Prints:
    next(1)
    next(2)
    next(100)
		next(200)
    completed
*/
Mathematical
Observableが除外したすべての値を計算することによってイベントの演算子を励起します.
//reduce
//Swift의 Reduce와 동일해 별다른 설명은 생략하며, 예시로 확인한다.
Observable.of(1,2,3,4,5).reduce(0,accumulator: +)
    .subscribe(onNext: {
        print($0)
    })

//모든 값을 더 해 이벤트를 발생
//retrun 15
整理する
RxSWIFTは複数の演算子を提供し、少なくともいくつかの演算子を整理しています.
もちろん、公式docsをチェックするには多くのものがありますが、Rxを使用する場合は、使用時に把握するために必要な演算子を見つける必要があります.
今回の整理ではこのような演算子がありますが、次回はこのような演算子がありますか?感覚があれば、気持ちがいいときは、いつでも勉強することができます.