Kotlin 의 Delegate기능 사용하기

Yeongpyo
2 min readOct 21, 2018

Kotlin의 Delegate( Observable, Vetoable)

위 코드는 KotlinDelegates 를 사용한 Code 입니다.

위에서 부터 하나씩 살펴 보도록 하겠습니다.

CodeKotlin DelegatesObservable Code입니다.

val observableValue : String by Delegates.observable("Observable Default"){ _, oldValue, newValue -> }

해당부분을 사용한 내용을 살펴보면 initialValue“Observable Default” 가 해당합니다.
그다음 onChage의 내용은 Kolin의 특성상 lambda 로 표현이 가능합니다.
onChange 는 반환타입이 Unit 이므로 지금은 아무것도 작성하지 않았습니다.

ObservableFunction Name 을 보았을때 onChage 이며 oldValue , newValue 의 변수명을 가진것을 보아 어떤 데이터가 들어오면 데이터의 값이 변한다는 것을 대략 추측 할수 있습니다.

위 내용을 확인해보면 ObservableChange라는 High Order Function 을 사용하여 Print 를 하여 결과값을 받아 볼수 있게 하였습니다.
observableValue 의 변수가 바뀔때마다 Degates.observableonChange 의 기능을 실행하여 해당 결과값을 받을수 있게 되었습니다.

CodeKotlin DelegatesVetoable Code입니다.

Observable 과 비슷하지만 다른점이 있다면 Boolean 을 반환한다는점이 다릅니다.
vetoable 를 단어 그대로 해석한다면 ‘거부할수 있는’ 으로 해석이 됩니다.
observable 데이터를 넣어주면 넣어주는 대로 데이터를 갱신하였지만 vetorable 는 갱신을 거부할수 있다는점이 다른점 입니다.

조건에는 String의 길이가 2일때만 true의 값을 반환하도록 하였습니다.
결과값을 확인하였을때 Lengh 의 값이 2 인 데이터만 갱신이 된 결과값을 확인할수 있습니다.
반환의 값이 true 일때는 데이터를 갱신하며, false 일때는 데이터를 갱신하지 않습니다.

--

--