Как переопределить установщик свойства, используя короткую форму? - PullRequest
0 голосов
/ 26 мая 2019

Я просто хочу переопределить установщик по умолчанию, используя короткую форму, но мне не удалось:

class MyViewModel: ViewModel() {
    var progress: Int = 0
        set(value) = MathUtils.clamp(value, 0, 100)
}

Там написано Required: Unit but found: Int.

Что я делаю неправильно?

1 Ответ

1 голос
/ 26 мая 2019

Установщик свойства - это фактический установщик свойства, а краткая форма - это просто упрощенная форма, чтобы функция возвращала результат одного выражения.

set(value) {
    field = MathUtils.clamp(value, 0, 100)
}

Теперь field = value является присваиванием, а не выражением, поэтому его нельзя использовать здесь. Но если вы действительно хотите реализовать его с более короткой формой, это все еще возможно с немного большей детализацией.

set(value) = run { field = MathUtils.clamp(value, 0, 100) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...