퀵 정렬할 때 pivot과 같은 값이 있는 경우 .filter { $0 == pivot }으로 만들어서 리턴하면 중복된 데이터도 배열로 같이 리턴할 수 있다.
이진탐색도 복습했는데 문제를 더 풀어봐야할 것 같다.
타입 프로퍼티는 자동으로 lazy로 작동한다.
RxSwift에서 가장 많이 쓴? Observable부터 알아봤다.
Observable은 ObservableType
프로토콜을 상속하고, 내부에는 추상 메서드인 subscribe, asObservable이 있다.
즉, subscribe, asObservable은 Observable class의 메서드가 아니라 ObservableType의 추상메서드다.
모든 Observable들은 ObservableType 프로토콜에 대한 구현체를 갖고 있다.
asObservable 메서드에는 Observable.create 메서드가 사용되는데, 타입 메서드로 정의되어 있다.
create 함수는 전달받은 subscribe 메서드의 구현체를 인자로 넘겨 AnonymousObservable
인스턴스를 반환하고 있다.
AnonymousObservable class는 인자로 전달받은 subscribe 메서드를 SubscribeHandler
라는 이름의 typealias로 갖고 있다.
이 class에는 run
메서드가 유일한데, sink와 subscription이라는 Disposable을 튜플로 묶어서 반환해 준다.
여기서 sink는 AnonymousObservableSink
의 인스턴스를 저장하고 있다.
subscription
은 위 AnonymousObservableSink의 메서드 중 run을 호출한 결과를 저장하고 있는데, run 호출 시 인자로 받은 Observer가 아니라 현재 인스턴스의 자기 자신을 전달한다.
AnonymousObservableSink 안에는 on
메서드가 있다.
이 메서드는 전달된 이벤트에 따라 next가 전달되면 forwardon
이라는 메서드를 호출하고, error/completed 이벤트에는 forwardon 이후에 dispose
해서 시퀀스를 종료시킨다.
프로그래머스 알고리즘 2문제 이상 풀기
네트워크 좀 더 딥하게 공부
자료구조 학습
할 게 너무 많다... 진짜로...
틈틈이 RxSwift도 파헤쳐 봐야겠다.
놀자고 연락오는 친구들에게 다 거절하고 있는 상황이 너무 힘들고 미안하다. 그래도 연락줘서 고마워..