6장에서 lazy, Delegates.observable, Delegates.vetoable을 공부했다.
lazy
델리게이트는 var
프로퍼티에 쓰이는 Delegates.notNull
이나 lateinit
과 달리 val
속성에 쓰인다.lazy
델리게이트는 Delegates.notNull
이나 lateinit
과 달리 프로퍼티를 초기화할 방법을 나타내는 람다를 사용한다. 이때 이 람다는 속성에 할당될 값을 반환할 것을 요구한다.lazy
델리게이트는 프로퍼티가 사용되는 시점에 람다가 반환한 값으로 초기화된다.Delegates.observable
은 프로퍼티의 값이 변경될 때마다 작업이 필요할 때 사용한다.(Observer Pattern)Delegates.observable
은 첫 번째 인자로 프로퍼티의 초기 값, 두 번째 인자로 값이 변경될 때 호출할 람다를 받는다.Delegates.observable
의 람다는 세 개의 인자를 가지는데, 첫째는 KProperty<out R>
의 인스턴스, 둘째는 값이 변경되기 직전의 이전 값, 셋째는 변경된 값이다.Delegates.vetoable
은 Delegates.observable
과 유사하다. 다만 Delegates.vetoable
은 인자로 받는 람다가 Boolean 값을 반환할 것을 요구한다.Delegates.vetoable
은 람다가 반환한 값이 참일 경우에만 새로운 값을 할당한다. 즉, Delegates.vetoable
이 사용된 프로퍼티의 값의 변경이 시도될 경우, 람다의 값이 참인지를 확인한 후 참일 경우에만 값의 갱신이 일어난다.cs 스터디를 시작했다. 책은 면접을 위한 CS 전공지식 노트를 사용한다. 오늘은 디자인 패턴의 앞 부분을 공부했다.