Delegates.observable は、プロパティが変更されるたびに指定されたラムダ(監視関数)が呼び出されます。
ラムダは3つの引数を取ります:
prop: プロパティのメタデータ(プロパティ名など)。old: プロパティの古い値。new: プロパティの新しい値。
このように、Delegates.observable を使うとプロパティの変更を監視して、変更のたびに処理を実行できます。
| import kotlin.properties.Delegates | |
| class User { | |
| var name: String by Delegates.observable("<No Name>") { prop, old, new -> | |
| println("Property '${prop.name}' changed from '$old' to '$new'") | |
| } | |
| } | |
| fun main() { | |
| val user = User() | |
| user.name = "Alice" // コンソールに "Property 'name' changed from '<No Name>' to 'Alice'" と表示 | |
| user.name = "Bob" // コンソールに "Property 'name' changed from 'Alice' to 'Bob'" と表示 | |
| } |