Publishers.AllSatisfy

μ œλ„€λ¦­ ꡬ쑰체 | 전달받은 λͺ¨λ“  μš”μ†Œκ°€ 주어진 쑰건을 ν†΅κ³Όν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν•˜λ‚˜μ˜ λΆˆλ¦¬μ–Έ 값을 λ°œν–‰ν•˜λŠ” Publisher

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

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

  • predicate : 각각의 전달받은 μš”μ†Œλ₯Ό ν‰κ°€ν•˜λŠ” ν΄λ‘œμ €

μƒμœ„ Publisherκ°€ λ‚΄λŠ” λͺ¨λ“  값듀이 주어진 쑰건을 ν†΅κ³Όν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜ν•œλ‹€.

λͺ¨λ“  값듀이 주어진 쑰건을 λ§Œμ‘±ν•˜λŠ”μ§€ μ•ŒκΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλ‹€.

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

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

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

// Combine AllSatisfy : false
// Combine AllSatisfy Finish

μƒμœ„ Publisherκ°€ 2, 4, 7의 값을 μ°¨λ‘€λŒ€λ‘œ λ‚΄κ³ , 쑰건으둜 값이 2의 λ°°μˆ˜μΈμ§€λ₯Ό ν™•μΈν•˜κ²Œ ν•˜μ˜€λ‹€.

2, 4의 값은 2의 λ°°μˆ˜μ΄λ‚˜ 7의 값은 2의 λ°°μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ λͺ¨λ“  값듀이 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•Šκ²Œ λœλ‹€.

결과적으둜 falseλ₯Ό λ°˜ν™˜ν•˜κ³  μ’…λ£Œν•œλ‹€.

RxSwift

ν•΄λ‹Ή λ™μž‘μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μ˜€νΌλ ˆμ΄ν„°λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€.

ReactiveSwift

ν•΄λ‹Ή λ™μž‘μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μ˜€νΌλ ˆμ΄ν„°λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€.

μ°Έκ³ 

ReactiveX - Operators - All

Last updated