개요
Combine을 영어라고 치면 Operator는 단어라고 비유할 수 있다.
알면 알 수록 더 다채롭게 combine을 사용가능하다.
Publisher 메서드라고 생각하면 된다.
Operator(transform)
- collect : 각각의 value를 array형태로 묶어줌
- map : 원하는 형태로 변경, Swift의 map이랑 같음
- tryMap : 클로저 안에서 try 사용 가능한 map
- flatMap : swift랑 같은 여러개의 upstream을 single downstream으로 변경
- replaceNil : 말그대로 nil값을 특정값으로 바꿔주고 옵셔널 해제
- replaceEmpty : complete이지만 output이 없을 때 기본값
- scan : 설정된 초기값으로부터 누적 값을 계산
Operator(filter)
- filter : 말 그대로 필터 Swift의 filter와 같음
- removeDuplicates : 말 그대로 중복제거
- compactMap : nil 제거된 map, 고차함수랑 같음
- ignoreOutput : 결과는 무시 completion만 처리
- first : 클로저의 조건을 만족하는 첫번째 요소만 output으로 처리
- last : 클로저의 조건을 만족하는 마지막 요소만 output으로 처리
- dropFirst : 인수로 지정한 수만큼 앞에 요소들 버림
- drop : 조건을 만족하는 녀석들 버림
- drop(untilOutputFrom:) : 특정 조건을 만족할 때까지의 output 버림
- prefix : 인수만큼 앞의 output만 사용
- prefix(untilOutputFrom:) : 특정 조건을 만족할 때까지의 output만 사용
Operator(combine)
- prepend : 인자로 들어온 value, collection, publisher를 앞에 추가
- append : 인자로 들어온 value, collection, publisher를 뒤에 추가
- switchToLatest : 여러개의 publisher중 마지막의 publisher로 바꿔줌
- merge : 여러개의 publisher를 합쳐줌
- combineLatest : 시점에 맞게 튜플로 묶어줌
- zip : 개수에 맞게 튜플로 묶어줌
Operator(Time)
시간 단위로도 할 수 Output을 전달할 수 있음
- collect : 시간 단위로 collect 할 수 있음
- debounce : 입력주기가 끝난 뒤 설정한 값만큼 시간이 지나면 마지막 값 전달
- throttle : 구독한 시점의 output 전달 / 그 주기랑 마지막 시점으로 할 지 설정 가능
- timeout : 설정한 시간만큼 지나면 completion 전달
- measureInterval : DispatchQueue, runLoop를 이용해서 value 사이의 시간을 얻을 수 있음
Operator(sequence)
- min : 최솟값만 전달
- max : 최댓값만 전달
- first : 첫번째 값만 전달
- last : 마지막 값만 전달
- output(at) : at에 있는 값만 전달
- count : output의 개수 전달
- contains : 포함되어있는지 아닌지 bool값 전달
- allSatisfy : 모든 output이 클로저의 조건을 만족하는지 아닌지 전달
- reduce : 누적된 값만 전달(scan은 매번 더할 때마다 전달)
Operator(Resource Management)
- share : reference 타입의 publisher를 공유할 수 있게해줌
- multicast : 한번만 실행하여 모든 구독자들에게 전달