Combine
Combine ) Operator (7) - Selecting Specific Elements
Zedd0202
2020. 7. 30. 10:45
안녕하세요 :) Zedd입니다.
오늘은..벌써 7번째..!!
오늘도 쉬워서 얼른 공부해볼거에요.
이전 시리즈들은 여기서 확인해주세요
그럼 시작할게요!
first() / last()
first(where:) / last(where:)
tryFirst(where:) / tryLast(where:)
output(at:)
output(in:)
output을 제외한 친구들은 첫번째냐 마지막이냐만 달라서...같이 볼게요.
first() / last()
이 친구는 스트림의 첫번째/마지막 요소를 publish한 다음 끝나는 operator입니다.
만약 first/last가 요소를 받기전에 업스트림이 완료되면 값을 publish하지 않고 완료됩니다.
응 갸쉬워
first(where:) / last(where:)
where안에 들어간 closure를 만족하는 첫번째/마지막 요소를 publish한 다음 끝나는 친구입니다.
처음으로 0보다 커지는게 1이니까..1을 publish하고 끝나는거죠.
tryFirst(where:) / tryLast(where:)
에러를 낼 수 있는 closure가 들어가게 됩니다.
range가 -1 ~ 50인데, 요소가 99보다 작은 것만 guard문을 통과할 수 있습니다.
첫 요소인 -1부터 tryFirst에서 바로 넘어가 버리므로 결과는 -1, finished가 나오게 됩니다.
만약 범위가 100...200이라면 guard문을 통과하지 못하고 RangeError가 나게 되고 스트림이 오류로 인해 실패로 끝나게 됩니다.
참고 : tryFirst, tryLast가 배열의 첫번째/마지막만 쏙 빼내서 주는게 아닙니다. 전부 검사합니다. 왜냐면 where closure를 만족하는 first/last를 주는것이므로. 다 검사해야함.