Operator

17727 ワード


1. ignoreElements

  • nextイベントは無視されます.
  • onCompleted、onErrorイベントが利用可能です.
  • let 취침모드 = PublishSubject<String>()
    
    취침모드
        .ignoreElements()
        .subscribe{_ in
            print("햇빛")
        }
        .disposed(by: disposeBag)
    
    취침모드.onNext("기상")
    취침모드.onNext("기상")
    취침모드.onNext("기상")
    
    //출력
    //(아무것도 출력되지 않음)

    2. elementAt

  • 指定インデックス解放
  • let disposeBag = DisposeBag()
    
    let 두번울면깨는사람 = PublishSubject<String>()
    
    두번울면깨는사람
        .element(at: 2)
        .subscribe(
    			onNext:{
                print($0)
            })
        .disposed(by: disposeBag)
    
    두번울면깨는사람.onNext("기상0") //index 0
    두번울면깨는사람.onNext("기상1") //index 1
    두번울면깨는사람.onNext("기상2") //index 2
    두번울면깨는사람.onNext("기상3") //index 3
    
    //출력
    //기상2

    3. filter

  • その名の通り、
  • をフィルタリングする
    let disposeBag = DisposeBag()
    
    Observable.of(1,2,3,4,5,6,7,8,9)
        .filter{ num in
            num % 2 == 0
        }
        .subscribe(
            onNext:{
                print($0)
            }).disposed(by: disposeBag)
    
    //출력
    //2 4 6 8 

    4. Skip, SkipWhile, SkipUntil


    Skip

  • 最初から何個の要素をスキップするかを書き、skip
  • を書きます.
    Observable.of(1,2,3,4,5,6,7,8,9)
        .skip(3)
        .subscribe(
            onNext:{
                print($0)
            }).disposed(by: disposeBag)
    //출력
    // 4 5 6 7 8 9

    SkipWhile

  • 要素をスキップしない限り(フィルタとは逆)
  • は、falseの論理から解放(真面skip)
  • を開始する.
    let disposeBag = DisposeBag()
    
    Observable.of(1,2,3,4,5,6,7,8,9)
        .skip(while: {
            $0 != 6
        })
        .subscribe(
            onNext:{
                print($0)
            })
        .disposed(by: disposeBag)
    //출력
    //6 7 8 9 

    SkipUntil

  • 、内部で他の観察可能なものを呼び出す必要がある
  • 現在観察可能なskip
  • まで観察可能
    let disposeBag = DisposeBag()
    
    let 손님 = PublishSubject<String>()
    let 문여는시간 = PublishSubject<String>()
    
    손님
        .skip(until: 문여는시간)
        .subscribe(onNext: {
          print($0)
        })
        .disposed(by: disposeBag)
    
    손님.onNext("1")
    손님.onNext("2")
    
    문여는시간.onNext("시작")
    손님.onNext("3")
    
    //출력
    //3

    Take, TakeWhile,TakeUntil


    Take

  • skipとは逆
  • .take(3)と言えば最初から3つ解放そして
  • を無視

    TakeWhile

  • SkipWhileとは逆
  • は、任意の論理がfalseである前に、
  • のみを解放(真面解放)する.

    TakeUntil

  • SkipUntilとは逆
  • は現在観察可能であり、中の観察可能なものまで、次の観察可能なものまで、take
  • Enumerated

  • インデックスおよび要素
  • let disposeBag = DisposeBag()
    
    Observable.of("A","B","C","D","E")
        .enumerated()
        .take(while: {index,_ in
            index != 3
        }).subscribe(onNext:{
            print($0)
        }).disposed(by: disposeBag)
    
    //출력
    //(index: 0, element: "A")
    //(index: 1, element: "B")
    //(index: 2, element: "C")

    distinctUntilChanged

  • の連続する重複値
  • を削除する.
  • 連続削除後の
  • TransformingOperator


    Transforming Operator
    →置換演算子

    Combining Operator


    Combining Operator
    →連結演算子

    RxCocoa


    RxCocoa