Operator
Map: publisher의 모든 요소를 변환함.
Map과 ForEach차이
- 반복을 하는 것은 똑같지만 ForEach는 여기서 부터 여기까지 반복을하겟다 명시라면 map은 바꾸겟다라는 명시. 물론 ForEach에서 변환할수 있다= 이것자체가 Map . 다른사람이 봤을때 Map이 있으면 아~ 바꾸려나 보다~~ 이해할수 있다.
tryMap : Map과 같지만 클로저 오류발생시키면 Publish 종료
compactMap: nil을 제외하고 nil이 아닌것만 publishx``
replaceNil : nil들을 내가 원하는 element로 변환
scan: 아래와 같이 더한다. 값들을 누적
let publisher = (0...5).publisher
.scan(0, { return $0 + $1 })
.sink(receiveValue: { print ("\($0)", terminator: " ") })
// Prints "0 1 3 6 10 15 ".
reduce: scan이 전부다 publish라면 이놈은 마지막만 publish
Debounce
내가 입력받은지 이시간이후에 방출을 해주겠다. 이벤트1들어오자마자 바로 방출~이게 아님!!
서버에 너무 많은 요청을 막을수 있다. ex)사용자가 입력하고 1초후에 요청하자.
filter: 제공된 클로저와 일치하는 요소들만 다시 publish함.
collect: 모든 element를 모으고 publish가 완료되면 single array를 내보낸다.
let numbers = (0...7)
let cancellable = numbers.publisher
.collect(4)
.sink { print("\($0)", terminator: " ") }
=> [0,1,2,3][4,5,6,7]이렇게 나오게 된다.
이후에도 수많은 Operator들이 있지만 그때마다 업데이트 예정
'Swift' 카테고리의 다른 글
LLVM? Swift가 컴파일되는 과정 Swift 기초 (0) | 2024.03.01 |
---|---|
Swift 5.9 Updates (2) | 2023.10.10 |
TaskGroup (0) | 2023.08.13 |
Swift Concurrency - Async, Await (0) | 2023.08.08 |
Combine3-Cancellable (0) | 2023.07.09 |