2017-01-08 31 views
10
biz boş olmayan bir özellik için bir gözlenebilir tanımlayabilirsiniz KOTLIN yılında

,Kotlin: null mülkiyet temsilci gözlemlenebilir

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

ancak bu mümkün değil bir tanımlamak için bir yol olacağını Ne

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

bir nullable özellik için gözlemlenebilir?

Düzenleme: Bu tür kesmesi burada başarısız Nedense derleme hatası

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

bir sorunu bildirmek için lütfen: Bunun yerine mülk tipi beyanı atlayabilirsiniz? Aynı işe yaramalı. Lütfen ikinci kod snippet'inde yaşadığınız sorunları açıklayın. – voddan

+0

Derleyici hatasıyla derlenmez, güncellenmez. – Francesc

cevap

14

olduğunu. Delegenin türünü manuel olarak belirtmeniz gerekir. Eğer bu mümkün değildir sizce neden

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

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

+2

Bir zaten var çıkıyor: https://youtrack.jetbrains.com/issue/KT-10930 – Francesc