Skip to content

Instantly share code, notes, and snippets.

@takashi1975
Last active November 7, 2024 04:35
Show Gist options
  • Save takashi1975/ac4c33662b0d72f53897db9479addcca to your computer and use it in GitHub Desktop.
Save takashi1975/ac4c33662b0d72f53897db9479addcca to your computer and use it in GitHub Desktop.
Delegates.observable Sample

説明

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'" と表示
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment