When to use Kotlin's takeIf() and takeUnless() functions
Стандартная библиотека содержит множество различных утилитных функций, которые делаю код короче и приятнее. Но не всегда так все очевидно и можно легко столкнуться с проблемами - например функции takeIf и takeUnless таят в себе опасность.
Задача этих функций в том чтобы проверить значение и если оно удовлетворяет (или нет в для
takeUnless) условию вернуть это значение, в противном случае - null. Например digit.takeIf { it % 2 == 0 }, что является аналогом кода if (it % 2 == 0) digit else null.На первый взгляд все выглядет хорошо, но надо учитывать порядок выполнения инструкций, так как он разный и может привезти к печальны последствиям. Больше подробностей в статье.