Проваливается в Котлин: Переключатель / Когда без перерыва

Я новичок в kotlin, и я хочу сделать переключатель, у которого нет «перерыва». В java было бы так:

switch (b){ case 3: Log.d("int", "3"); case 2: Log.d("int", "2"); case 1: Log.d("int", "1"); } 

И если b = 2, тогда он будет печатать:

D / int: 2

D / int: 1

Я хочу сделать это в Котлине, не перебирая один и тот же код для каждого случая. В котлинском конверторе вывод кода состоял в том, что:

 when (b) { 3 -> { Log.d("int", "3") Log.d("int", "2") Log.d("int", "1") } 2 -> { Log.d("int", "2") Log.d("int", "1") } 1 -> Log.d("int", "1") } 

Есть ли другой способ сделать это? Мой фактический код намного больше;

То, что вы просите, это « провал », который не поддерживается в Котлине. На самом деле, это не очень хороший дизайн, чтобы использовать это imho, но, конечно, это всегда зависит от вашего варианта использования.

Если вы действительно хотите это сделать, вы можете извлечь блоки кода, которые будут выполняться в случаях в ( локальных ) функциях, если хотите:

 fun fallthrough(myInt: Int) { fun case3() = println("1") fun case2() { case3() println("2") } fun case1() { case2() println("3") } when (myInt) { 3 -> case1() 2 -> case2() 1 -> case3() } } 
Intereting Posts
Почему intairiJ IDEA-область видимости «предоставляется» вместо «компиляции»? Компиляция приложения Kotlin Android не удалась с сообщением: Неразрешенная ссылка: kotlinx "Coroutine local" переменные в kotlin Расширение Котлина для следующего значения Enum без отражения Kotlin: построить значение производного общего типа в базовом классе Как начать работу с viewmodel при успехе входа в шаблон mvvm OnComplete никогда не вызывал с toSortedList () и groupBy () Kotlin: как преобразовать тест, который использует Thread.sleep для RxJava TestScheduler Сопутствующие объекты скрывают класс-ошибку или функцию? RequiresApi vs TargetApi андроид андроид Что означает предупреждение «Использовать свойства из пакетов вариантов сборки»? Exposed: как разбирать JSON в классе Entity Кинжал 2 в Котлине неразрешимая ссылка DaggerXXXSub Получение ошибки, связанной с сертификатом, при загрузке Kotlin в Android Studio Чтение JSON POST с использованием PHP