перерыв или возврат из выражения

Что я хотел бы сделать:

when(transaction.state) { Transaction.Type.EXPIRED, //about 10 more types Transaction.Type.BLOCKED -> { if (transaction.type == Transaction.Type.BLOCKED && transaction.closeAnyway) { close(transaction) break //close if type is blocked and has 'closeAnyway' flag } //common logic } //other types } 

Я не могу написать break :

«break» и «continue» не допускаются в выражениях «когда». Рассмотрите возможность использования меток для продолжения / выхода из внешнего цикла.

Это способ return/break от заявлений? Или что это лучший способ его решить?

Вы можете использовать run с возвратом на метке :

 when(transaction.state) { Transaction.Type.EXPIRED, //about 10 more types Transaction.Type.BLOCKED -> run { if (transaction.type == Transaction.Type.BLOCKED && transaction.closeAnyway) { close(transaction) [email protected] //close if type is blocked and has 'closeAnyway' flag } //common logic } //other types } 

Вы можете использовать метки для разрыва / продолжения / возврата. например:

 [email protected] for (transaction in transactions) { when (transaction.state) { Transaction.Type.EXPIRED, Transaction.Type.BLOCKED -> { [email protected] } } } 

См. « Возвраты и переходы» – язык программирования Kotlin для получения более подробной информации.

Работайте с использованием apply() :

 transaction.apply { when(state) { Transaction.Type.EXPIRED, //about 10 more types Transaction.Type.BLOCKED -> { if (type == Transaction.Type.BLOCKED && closeAnyway) { close(this) [email protected] } //common logic } //other types } } 
  • Получение ошибки, связанной с сертификатом, при загрузке Kotlin в Android Studio
  • Какова цель возврата единиц в функции
  • Android Recycler View Horizontal Прокрутите до последнего элемента и покажите первый элемент
  • Невозможно установить Content-Type в запросе SOAP
  • Сравнение ссылок и стоимости
  • Kotlin прямой доступ к Button в android.support.v4.app.Fragment ссылка на нулевой объект
  • Напишите большой входной поток в файл в Котлине
  • Как преобразовать java.util.stream.Stream <Something> в kotlin.Sequence <Something>
  • Android с Kotlin - Как использовать HttpUrlConnection
  • Как явно вызвать блок init объекта?
  • BottomNavigationView ссылку на ViewPager, когда я установил Listener в bottomNavigationView, мне нужно дважды щелкнуть, чтобы выполнить то, что я делаю
  • Давайте будем гением компьютера.