Publishers.CompactMap
μ λ€λ¦ ꡬ쑰체 | λ°μ κ°κ°μ μμμ λνμ¬ ν΄λ‘μ λ₯Ό νΈμΆνμ¬ nilμ΄ μλ κ²°κ³Όλ₯Ό λ€μ λ°ννλ Publisher
μ΄λμ λΌμ΄μ λ λ κ°μ μΈμλ₯Ό λ°λλ€.
upstream
: μμμ νλ₯΄λ Publishertransform
: μμμ νλ₯΄λ Publisherλ‘λΆν° κ°μ λ°κ³ μ΅μ λ κ°μ λ°ννλ ν΄λ‘μ
Swiftμ compactMap
ν¨μμ κ°μ λμμ νλ€.
μνμ€μμ nil κ°μ μμ λ λ±μ μμ μ νκ³ μΆμ λ μ¬μ©ν μ μλ€.
compactMap
μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
// Publishers.CompactMap Publisher
Publishers.CompactMap(upstream: Publishers.Sequence<[Int?], Never>(sequence: [1, nil, 2])) { $0 }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine CompactMap Error")
case .finished:
print("Combine CompactMap Finish")
}
}, receiveValue: { value in
print("Combine CompactMap : \(value)")
})
.store(in: &cancellables)
// compactMap Operator
Publishers.Sequence<[Int?], Never>(sequence: [1, nil, 2])
.compactMap { $0 }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine CompactMap Error")
case .finished:
print("Combine CompactMap Finish")
}
}, receiveValue: { value in
print("Combine CompactMap : \(value)")
})
.store(in: &cancellables)
// Combine CompactMap : 1
// Combine CompactMap : 2
// Combine CompactMap Finish
RxSwift
compactMap
μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
Observable.from([1, nil, 2])
.compactMap { $0 }
.subscribe(onNext: { value in
print("RxSwift CompactMap : \(value)")
}, onError: { _ in
print("RxSwift CompactMap Error")
}, onCompleted: {
print("RxSwift CompactMap Finish")
})
.disposed(by: disposeBag)
// RxSwift CompactMap : 1
// RxSwift CompactMap : 2
// RxSwift CompactMap Finish
ReactiveSwift
filterMap
μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
SignalProducer([1, nil, 2])
.filterMap { $0 }
.start { event in
switch event {
case let .value(value):
print("ReactiveSwift CompactMap : \(value)")
case .failed:
print("ReactiveSwift CompactMap")
case .completed:
print("ReactiveSwift CompactMap")
default:
break
}
}
// ReactiveSwift CompactMap : 1
// ReactiveSwift CompactMap : 2
// ReactiveSwift CompactMap Finish
Last updated
Was this helpful?