LoginSignup
0
1

More than 5 years have passed since last update.

在 Kotlin 裡覆寫 property 的 setter

Posted at

今天複寫一個成員變數的 setter 之後,發現後續拿到的值還是 null ,
查了一下原來是雖然在 setter 有拿到一個值,但是還是要自己設定到該變數裡面去。

目前的經驗

Objective-C

一開始從 Objective-C 時代開始
是需要自己把 setter 拿到的直設定到 instance variable:

- (void)setName:(NSString *)name {
    _name = name; // _name 是 @property 在自動 synthesize 之後附贈的 instance variable
}

Swift

但是到 Swift 時代之後,這件事情不用(或是說不能)再自己做,於是在寫慣用的 didSet 的時候就逐漸習慣不要寫這個東西了:

var name: String? {
    didSet {
        // 做設定完想做的事
    }
}

Kotlin

var name: String? = null
    set(newName) {
        field = newName
    }

field 是 Kotlin 提供的一個魔術變數,在想要覆寫 setter 行為的時候,可以把該設定的數值設定進 field

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1