Проблема с kotlin для Android

У меня возникает интересная проблема. При отладке моего приложения isResColorId является false . К сожалению, let функция запускается, и я вижу qwe на logcat.

 fun drawableTint(context: Context, view: View, colorID: Int, isResColorId: Boolean = true) { try { val wrap = DrawableCompat.wrap(view.background) DrawableCompat.setTint(wrap, isResColorId then let { Timber.d("qwe"); ContextCompat.getColor(context, colorID) } ?: colorID) view.setBackgroundDrawable(wrap) }catch (e: Resources.NotFoundException){ Timber.e(e, "c_id: $colorID coz: $isResColorId") } } infix fun <T> Boolean.then(param: T): T? = if (this) param else null 

Logcat:

 qwe 

    Чтобы быть уверенным в том, что происходит, вы должны распечатать it внутри лямбды. Но, вероятно, это происходит:

     isResColorId.then(this.let({...})) ?: colorId 

    Это означает, что блок внутри let всегда оценивается.

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

     inline infix fun <T> Boolean.then(block: () -> T): T? = if (this) block() else null 

    Но в этом случае я предпочел бы писать, if (condition) A else B напрямую, вместо того, чтобы возвращать значение с null значением, которое вводит бокс и заставляет вас проверять null после использования с помощью оператора elvis.

    Intereting Posts
    Какова основная разница между сбросом и сокращением в Котлине? Когда использовать какой? Как получить фиксированное количество изменяемых размеров ячеек без заполнения в javafx? Как элегантная пара родительского и дочернего тегов в определении DSL в Kotlin между объектом и GoogleMap в kotlin Почему Kotlin не может переопределить метод List <*> оператора? Android Развернуть источники kotlin в репозитории maven Исключение при использовании Spring-data-mongodb с Kotlin Как указать общий тип на перегруженном операторе в Котлин? Как изменить глобальную переменную из реализации анонимного класса в котлин Android – RoomDb – Объект, вставленный успешно не найден в выбранном запросе в другой активности Напишите большой входной поток в файл в Котлине Android Kotlin – Как настроить методы настройки Java-конструктора Как использовать selectableButtonBackground на Anko? Получение ссылки на функцию Kotlin как метод Java Я пытаюсь играть музыку с SDcard