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 전공지식 노트를 사용한다. 오늘은 디자인 패턴의 앞 부분을 공부했다.