На этом шаге мы рассмотрим назначение и применение этой функции.
Выше мы сказали, что закончили обзор, но есть еще одна функция, дополняющая функцию takeIf, о которой стоит упомянуть, чтобы предостеречь от ее использования: takeUnless. Функция takeUnless действует так же, как takeIf, но возвращает объект-приемник, если условие ложно. Следующий код читает файл, если он не скрытый (и возвращает null, если скрытый):
val fileContents = File("myfile.txt").takeUnless { it.isHidden }?.readText()
Мы рекомендуем ограничить использование takeUnless, особенно для проверки сложных условий, потому что понимание программы у читающих ее людей займет много времени. Сравните "понятность" этих двух фраз:
сли вам понадобилось время, чтобы осмыслить это, то вы могли ощутить, что takeUnless выглядит как менее естественный способ описания логики, которую нужно выразить.
Для простых условий (как в примере выше) takeUnless не проблема. Но в более сложных примерах понять работу takeUnless будет сложнее (человеку, по крайней мере).
На следующем шаге мы приведем краткую сводку по стандартным функциям.