Можно ли проверить строку на несоответствие в операторе when?
Это, конечно, вполне возможно с помощью простого оператора if:
val storedValue = sharedPreferences.getString(identifier, NOT_SET)
if (storedValue != NOT_SET) {
super.setValue(storedValue)
}
Однако мне нравится, как storedValue
находится внутри оператора when в этом фрагменте:
when (val storedValue = sharedPreferences.getString(identifier, NOT_SET)) {
NOT_SET -> {}
else -> super.setValue(storedValue)
}
Падением является пустой блок кода для записи NOT_SET
.
Можно ли объединить эти два?
Я бы хотел охватить storedValue
и избавиться от пустых блоков кода. Результат будет сопоставим с:
when (val storedValue = sharedPreferences.getString(identifier, NOT_SET)) {
!NOT_SET -> super.setValue(storedValue)
}
Поскольку SharedPreferences является частью платформы Android, это может быть другое решение:
if (sharedPreferences.contains(identifier)) {
super.setValue(sharedPreferences.getString(identifier, null))
}
Однако цель моего вопроса - более глубокое понимание возможностей Котлина ради обучения.