VictorPower
@VictorPower

Как в данном случае работает функция filter для коллекции?

Есть код:
Код
fun getFilesFromPath(path: String, showHiddenFiles: Boolean = false, onlyFolders: Boolean = false): List<File> {
    val file = File(path)
    return if (file.listFiles() != null) {
        file.listFiles()!!
                .filter { showHiddenFiles || !it.name.startsWith(".") }
                .filter { !onlyFolders || it.isDirectory }
                .toList()
    } else {
        emptyList()
    }

}

Инфа по коду, если сразу не очевидно

file.listFiles() - коллекция файлов в файл-менеджере
Если showHiddenFiles сделать true, то покажет все файлы, вместе со скрытыми, если false оставить, то покажет все, кроме скрытых.
По onlyFolders логика такая же.

Как работает функция filter в базовом исполнении я понимаю. Значение знака "||" тоже. В моем понимании при использовании "||" в filter он должен фильтровать по какому-либо условию, которое true(или по обоим, если оба). Допустим collection.filter { it.some > 5 || it.some < 10 }
Этот код отфильтрует лишь по true условиям. Но вот по первому коду все равно не могу понять как это использовать для себя. Помогите понять, пожалуйста.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@WaterSmith
Android-разработчик. Java, Kotlin
Какие мини условия? Какая левая и правая часть?
|| это ИЛИ
Читаем: Если some больше 5 или меньше 10
Условие бессмысленно, потому что любое число будет больше 5 или меньше 10
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 3 000 до 4 500 $
SpectrumData Екатеринбург
от 120 000 до 180 000 ₽
FunCorp Москва
от 200 000 ₽
05 дек. 2020, в 08:07
15000 руб./за проект
05 дек. 2020, в 03:51
11000 руб./за проект
05 дек. 2020, в 02:29
1000 руб./за проект