티스토리 뷰
안녕하세요 :) Zedd입니다.
원래 이게 5탄이었어야 하는데;;;; 지금 발견함.
걍 합시다?
이렇게 5가지만 있어요.
contains(_:)
Swift Standard Library에 있는 것과 똑같습니다.
upstream publisher가 contains의 파라미터인 output과 동일한 값을 생성하면 true를 리턴합니다.
참고로 첫번째로 일치하는 걸 찾으면 true를 리턴하고 정상적으로 완료됩니다.
하지만 일치하는 요소를 생성하지 않고 upstream이 완료되면 false를 방출하고 종료합니다.
참고로 파라미터로 들어가는 타입은 Equatable을 준수하고 있어야 합니다.
contains(where:)
where안에 closure가 들어가는데 closure를 만족하는 것을 찾으면 true, 아니면 false를 방출하는 친구입니다.
요 Operator는 upsteam puplisher가 Equatable를 준수하지 않는 요소를 생성 할 때 유용합니다!
tryContains(where:)
contain(where:)와 똑같지만 closure가 에러를 낼 수 있겠네요.
요소를 2로 나눴을 때 나머지가 0이 아니면 Error를 내보내게 했습니다.
처음으로 3이 들어가게 되는데 처음부터@!! 3이니까..2로 나눈 나머지가 0이 아니게 됩니다. 그럼 스트림은 에러와 함께 실패하게 됩니다.
만약 처음 요소가 2라고 해볼게요. 그럼 2로 나눈 나머지가 0이고 10보다 작으니 true가 리턴될테고, 스트림은 정상적으로 끝나게 됩니다.
allSatisfy(_:)
다 만족하냐???!?
모든 요소가 넘긴 closure를 만족하는지를 보는 Operator입니다. 모두 만족하면 true, 아니면 false를 리턴합니다.
range가 -1~100인데, numbers배열의 모든 요소가 이 range안에 있냐!?를 검사합니다.
모두 -1과 100사이에 있는 것을 볼 수 있습니다.
그래서 true가 리턴된 것을 볼 수 있습니다. -1 ~ 100 사이에 있지 않은게 하나라도 numbers배열에 있다면, false를 리턴하게 됩니다.
tryAllSatisfy(_:)
에러를 낼 수 있겠구나...
guard문을 봐야겠죠?
upstream에서 요소가 0이 아닌 것만 와야 guard문을 통과 할 수 있씁니다.
그리고 통과한 요소가 전부 -1 ~ 100사이에 있어야만 true를 리턴합니다.
근데 numbers배열 맨 마지막에 0이 있죠!!!!
guard문을 통과하지 못하게 되고, 에러를 내게 됩니다.
에러로 인해 스트림이 실패로 끝나게 됩니다.
'Combine' 카테고리의 다른 글
Combine ) Operator (8) - Combining Elements from Multiple Publishers (0) | 2020.09.06 |
---|---|
Combine ) Operator (7) - Selecting Specific Elements (0) | 2020.07.30 |
Combine ) Operator (5) - Applying Sequence Operations to Elements (0) | 2020.07.26 |
Combine ) Operator (4) - Applying Mathematical Operations on Elements (1) | 2020.06.14 |
Combine ) Operator (3) - Reducing Elements (0) | 2020.06.05 |
- iOS delegate
- actor
- swift sort
- swift3
- swift 공부
- Accessibility
- ios 13
- 피아노
- UIBezierPath
- np-hard
- fastlane
- swift tutorial
- 스위프트 문법
- WKWebView
- Xcode
- github
- SwiftUI
- np-complete
- swift delegate
- Combine
- IOS
- FLUTTER
- 제이슨 파싱
- WidgetKit
- 회고
- Swift
- Git
- WWDC
- 스위프트
- swift array
- Total
- Today
- Yesterday