Kotlin의 Delegate( Observable, Vetoable)
위 코드는 Kotlin
의 Delegates
를 사용한 Code 입니다.
위에서 부터 하나씩 살펴 보도록 하겠습니다.
위 Code
는 Kotlin Delegates
의 Observable Code
입니다.
val observableValue : String by Delegates.observable("Observable Default"){ _, oldValue, newValue -> }
해당부분을 사용한 내용을 살펴보면 initialValue
는 “Observable Default”
가 해당합니다.
그다음 onChage
의 내용은 Kolin
의 특성상 lambda
로 표현이 가능합니다.onChange
는 반환타입이 Unit
이므로 지금은 아무것도 작성하지 않았습니다.
Observable
의 Function Name
을 보았을때 onChage
이며 oldValue
, newValue
의 변수명을 가진것을 보아 어떤 데이터가 들어오면 데이터의 값이 변한다는 것을 대략 추측 할수 있습니다.
위 내용을 확인해보면 ObservableChange
라는 High Order Function
을 사용하여 Print
를 하여 결과값을 받아 볼수 있게 하였습니다.observableValue
의 변수가 바뀔때마다 Degates.observable
의 onChange
의 기능을 실행하여 해당 결과값을 받을수 있게 되었습니다.
위 Code
는 Kotlin Delegates
의 Vetoable Code
입니다.
Observable
과 비슷하지만 다른점이 있다면 Boolean
을 반환한다는점이 다릅니다.vetoable
를 단어 그대로 해석한다면 ‘거부할수 있는’ 으로 해석이 됩니다.observable
데이터를 넣어주면 넣어주는 대로 데이터를 갱신하였지만 vetorable
는 갱신을 거부할수 있다는점이 다른점 입니다.
조건에는 String
의 길이가 2
일때만 true
의 값을 반환하도록 하였습니다.
결과값을 확인하였을때 Lengh
의 값이 2
인 데이터만 갱신이 된 결과값을 확인할수 있습니다.
반환의 값이 true
일때는 데이터를 갱신하며, false
일때는 데이터를 갱신하지 않습니다.