Operators

개요

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 : 한번만 실행하여 모든 구독자들에게 전달