#32 Kotlin Koans Properties/Properties 해설

1 소개



Kotlin 공식 레퍼런스의 Kotlin Koans Properties/Properties의 해설 기사입니다.

Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.

다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!

일단 각자 도전하고 나서 볼 수 있다고 생각합니다

2 세터 게터



#6 Kotlin Koans Introduction/Data classes 해설 그럼 세터 게터를 생략 할 수 있다고 전했습니다만,
이번에는 생략하지 않았을 때의 코드를 아래에 적습니다.

exampleSetterGetter

//セッター・ゲッターを省略したコード。
fun usePersonInfo(){
  val p = Person()
  p.name = "名前"
  p.age = 20
  val n = p.name
  val a = p.age
}

class Person{
  var name : String = ""
  var age : Int = 0
}

-------------------------------------------------------------------------------------------

//セッター・ゲッターを記述したコード。
fun usePersonInfo(){
  val p = Person()
  p.name = "名前"
  p.age = 20
  val n = p.name
  val a = p.age
}

class Person{
  var name : String = ""
  //nameプロパティのゲッター
  get(){
     return field
  }
  //nameプロパティのセッター
  set(x: String){
     field = x
  }
  var age : Int = 0
  //ageプロパティのゲッター
  get(){
     return field
  }
  //ageプロパティのセッター
  set(y: Int){
     field = y
  }
}


setter(set()), getter(get())는 각 속성에 각각 존재하며 속성 정의 바로 아래에 정의됩니다.

세터, 게터 내의 필드는 각 속성의 값을 가리킵니다.

클래스외에서 프로퍼티에 값을 세트 할 때 세터를, 클래스외로부터 프로퍼티을 이용하고 싶을 때에 게터를 이용합니다.

( 친절한 Kotlin 입문 (주식회사 컷 시스템) 을 참고로 했습니다.)

3 Properties/Properties 해설



Kotlin Koans Properties/Properties 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.

본문과 코드를 살펴보자.

Read about properties in Kotlin.

Add a custom setter to PropertyExample.propertyWithCounter so that the counter property is incremented every time propertyWithCounter is assigned to.

Properties
class PropertyExample() {
    var counter = 0
    var propertyWithCounter: Int? = null
        set
}

세터를 이용해, propertyWithCounter가 참조될 때마다 counter의 수치에 1을 더한다(propertyWithCoutner에는 임의의 숫자를 대입한다)와 같이 구현합니다.

세터(set())의 인수는 임의의 수치를 받기 때문에, 이하와 같은 구현이 됩니다.

Properties
class PropertyExample() {
    var counter = 0
    var propertyWithCounter: Int? = null
        set(v: Int?)
}


( v 는 임의의 인수로 OK입니다.)

인수로서 건네준 수치는 세터의 field 에 대입되어 counter 에는 가 더해지므로,
대답 코드는 다음과 같습니다.

Properties
class PropertyExample() {
    var counter = 0
    var propertyWithCounter: Int? = null
        set(x: Int?){
            field = x
            counter++
        }
}

(물론 counter = counter + 1 하지만 OK입니다.)

4 마지막으로



다음은 Kotlin Koans Properties/Lazy property의 해설을합니다.

좋은 웹페이지 즐겨찾기