2017-01-08 10 views
10
我々がnull以外のプロパティの観測可能を定義することができKotlinで

Kotlinは:NULL可能プロパティのデリゲートは、観察

var name: String by Delegates.observable("<no name>") { 
    prop, old, new -> 
    println("$old -> $new") 
} 

は、しかし、これは不可能である定義するための方法だろう何

var name: String? by Delegates.observable("<no name>") { 
    prop, old, new -> 
    println("$old -> $new") 
} 

null可能なプロパティでは観測できますか?

編集:これは、型推論は、ここで失敗したいくつかの理由でコンパイルエラー

Property delegate must have a 'setValue(DataEntryRepositoryImpl, KProperty<*>, String?)' method. None of the following functions is suitable: 
public abstract operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String): Unit defined in kotlin.properties.ReadWriteProperty 
+0

で問題を提出してください。代わりに、プロパティの型宣言を省略することができますか?それは同じように動作するはずです。 2番目のコードスニペットで発生した問題を説明してください。 – voddan

+0

コンパイル時にコンパイルされず、更新されません。 – Francesc

答えて

14

です。デリゲートの種類は手動で指定する必要があります。あなたはそれが不可能だと思いますなぜ

var name by Delegates.observable<String?>("<no name>") { 
    prop, old, new -> 
    println("$old -> $new") 
} 

https://youtrack.jetbrains.com/issues/KT

+2

既に存在することが分かります:https://youtrack.jetbrains.com/issue/KT-10930 – Francesc

関連する問題