Publishers.DropWhile

μ œλ„€λ¦­ ꡬ쑰체 | 주어진 ν΄λ‘œμ €κ°€ falseλ₯Ό λ°˜ν™˜ν•  λ•ŒκΉŒμ§€ μƒμœ„μ— 흐λ₯΄λŠ” Publisherλ‘œλΆ€ν„° μš”μ†Œλ₯Ό μƒλž΅ν•˜λŠ” Publisher

μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 두 개의 인자λ₯Ό λ°›λŠ”λ‹€.

  • upstream : μƒμœ„μ— 흐λ₯΄λŠ” Publisher

  • predicate : μš”μ†Œμ˜ μƒλž΅ μ—¬λΆ€λ₯Ό κ²°μ •ν•˜λŠ” ν΄λ‘œμ €

쑰건에 λ§žμ§€ μ•Šμ„ λ•ŒκΉŒμ§€λŠ” λ°œν–‰λœ 값을 λ¬΄μ‹œν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

drop μ˜€νΌλ ˆμ΄ν„°μ™€ 관련이 μžˆλ‹€.

// Publishers.DropWhile Publisher
Publishers
  .DropWhile(upstream: Publishers.Sequence<[Int], Never>(sequence: [1, 2, 3])) { $0 < 3 }
  .sink(receiveCompletion: { completion in
    switch completion {
    case .failure:
      print("Combine DropWhile Error")
    case .finished:
      print("Combine DropWhile Finish")
    }
  }, receiveValue: { value in
    print("Combine DropWhile : \(value)")
  })
  .store(in: &cancellables)

// drop Operator
Publishers.Sequence<[Int], Never>(sequence: [1, 2, 3])
  .drop { $0 < 3 }
  .sink(receiveCompletion: { completion in
    switch completion {
    case .failure:
      print("Combine DropWhile Error")
    case .finished:
      print("Combine DropWhile Finish")
    }
  }, receiveValue: { value in
    print("Combine DropWhile : \(value)")
  })
  .store(in: &cancellables)

// Combine DropWhile : 3
// Combine DropWhile Finish

μƒμœ„ Publisherκ°€ 1, 2, 3의 값을 μˆœμ„œλŒ€λ‘œ λ‚Έλ‹€.

3 미만일 λ•ŒκΉŒμ§€ λ°œν–‰λœ 값을 μƒλž΅ν•˜λΌλŠ” 쑰건에 μ˜ν•΄ 3의 값을 λ‚΄κ³  μ’…λ£Œν•œλ‹€.

RxSwift

skipWhile μ˜€νΌλ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆλ‹€.

Observable.from([1, 2, 3])
  .skipWhile { $0 < 3 }
  .subscribe(onNext: { value in
    print("RxSwift DropWhile : \(value)")
  }, onError: { _ in
    print("RxSwift DropWhile Error")
  }, onCompleted: {
    print("RxSwift DropWhile Finish")
  })
  .disposed(by: disposeBag)

// RxSwift DropWhile : 3
// RxSwift DropWhile Finish

ReactiveSwift

skip μ˜€νΌλ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆλ‹€.

SignalProducer([1, 2, 3])
  .skip { $0 < 3 }
  .start { event in
    switch event {
    case let .value(value):
      print("ReactiveSwift DropWhile : \(value)")
    case .failed:
      print("ReactiveSwift DropWhile Error")
    case .completed:
      print("ReactiveSwift DropWhile Finish")
    default:
      break
    }
  }

// ReactiveSwift DropWhile : 3
// ReactiveSwift DropWhile Finish

μ°Έκ³ 

ReactiveX - Operators - Skip

Last updated