Publishers.Map
์ ๋ค๋ฆญ ๊ตฌ์กฐ์ฒด | ์ ๊ณต๋ ํด๋ก์ ๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ํ๋ฅด๋ Publisher๋ก๋ถํฐ ๋ชจ๋ ์์๋ค์ ๋ณํํ๋ Publisher
์ด๋์ ๋ผ์ด์ ๋ ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
upstream
: ์์์ ํ๋ฅด๋ Publishertransform
: ์์์ ํ๋ฅด๋ Publisher๋ก๋ถํฐ ์์๋ค์ ๋ณํํ๊ธฐ ์ํ ํด๋ก์
๋ณํ ํจ์๋ฅผ ์ ์ฉํ์ฌ ์์๋ฅผ ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
Swift์ map
ํจ์์ ๊ฐ์ ๋์์ ํ๋ค.
map
์คํผ๋ ์ดํฐ์ ๊ด๋ จ์ด ์๋ค.
// Publishers.Map Publisher
Publishers.Map(upstream: Publishers.Sequence<[Int], Never>(sequence: [1, 2])) { $0 * 2 }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine Map Error")
case .finished:
print("Combine Map Finish")
}
}, receiveValue: { number in
print("Combine Map : \(number)")
})
.store(in: &cancellables)
// map Operator
Publishers.Sequence<[Int], Never>(sequence: [1, 2])
.map { $0 * 2 }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine Map Error")
case .finished:
print("Combine Map Finish")
}
}, receiveValue: { number in
print("Combine Map : \(number)")
})
.store(in: &cancellables)
// Combine Map : 2
// Combine Map : 4
// Combine Map Finish
Publishers.Sequence
Publisher์์ 1๊ณผ 2์ ๊ฐ์ด ์ฐจ๋ก๋๋ก ๋์ค๊ณ , ์ด ์์์ ๋ํ์ฌ 2๋ฅผ ๊ณฑํ๋ ๋ณํ ํจ์๋ฅผ ์ ์ฉํ์ฌ 2์ 4์ ๊ฐ์ ๋ธ ํ ์ข
๋ฃํ๋ค.
RxSwift
map
์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
Observable.from([1, 2])
.map { $0 * 2 }
.subscribe(onNext: { number in
print("RxSwift Map : \(number)")
}, onError: { _ in
print("RxSwift Map Error")
}, onCompleted: {
print("RxSwift Map Finish")
})
.disposed(by: disposeBag)
// RxSwift Map : 2
// RxSwift Map : 4
// RxSwift Map Finish
ReactiveSwift
map
์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
SignalProducer([1, 2])
.map { $0 * 2 }
.start { event in
switch event {
case let .value(number):
print("ReactiveSwift Map : \(number)")
case .failed:
print("ReactiveSwift Map Error")
case .completed:
print("ReactiveSwift Map Finish")
default:
break
}
}
// ReactiveSwift Map : 2
// ReactiveSwift Map : 4
// ReactiveSwift Map Finish
์ฐธ๊ณ
Last updated
Was this helpful?