Подтвердить что ты не робот

Kotlin: видимый делегат свойства nullable

В Котлине мы можем определить наблюдаемое для непустого свойства,

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")
}

Каким образом можно определить наблюдаемое свойство nullable?

Изменить: это ошибка компиляции

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
4b9b3361

Ответ 1

По какой-то причине вывод типа не выполняется. Вы должны указать тип делегата вручную. Вместо этого вы можете опустить объявление типа свойства:

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

Пожалуйста, укажите проблему на https://youtrack.jetbrains.com/issues/KT