// 클래스 안
private var position = 0
fun getPosition() = position
fun getName() = name
리뷰어님 : getter를 따로 만들기 보다, 프로퍼티를 외부에 공개하고 set을 못하게 막아보는 것은 어떨까요?
관련 내용은 kotlin property 문서 내용을 참고해보세요 :)
나 : Kotlin을 Kotlin 답게 사용하지 못했던 것 같습니다. Java같이 getter를 구현하고 있었군요.😵
구글링을 하면서 알아보니 두 가지의 방법이 있었습니다.
var postion : Int = 0
private set
private var _results: MutableList<List<Tile>> = mutableListOf()
val results: List<List<Tile>>
get() = _results
위의 예시코드에서 results의 경우 그냥 getter로 꺼내쓰면 리스트의 내용이 수정 될 위험이 있습니다. 따라서 수정 할 수 없게 List로 가공이 되어 반환이 되게끔해야 합니다. Backing Properties로 해결 할 수 있습니다.
평소에 클래스를 구현한다고 하면, 대부분 변수들의 접근제어를 private
로 지정하여 외부에서 접근을 못하게끔 하였는데, val
이면 상관없지만 var
의 경우 수정이 가능 할 수 있어서 private
로 지정하여 막아둔 이유가 컸다.
물론 아직 코틀린이 미숙해서...ㅎㅎ 외부에 공개하고private set
으로 막아둘 수 있다는 사실을 몰랐지만 이번에 알게 되었으니 됐다.😎