enum.
В будущем кто-то может добавить в enum новое значение, и хочется чтобы он не забыл добавить соответствующую ветку в when
Можно ли как то сделать, чтобы если он забыл добавить, то when не компилился?
А если нет, то как еще сделать так, чтобы не забыли добавить ветку при расширении enum?
если там нет else, то вроде бы и не скомпилит? или я с силедами путаю?
сделать val v = when{...}
inline val Any?.exhaustive get() = this enum class A { B, C } when(myA) { A.B -> ... }.exhaustive Такое решение позволяет быстро превратить любой when в выражение и затребовать обход всех веток, а инлайн делает это бесплатным. Мог, правда, напутать с тем, куда инлайн вешать, на проперти или на геттер.
Обсуждают сегодня