Отбор и преобразование в Dart
На Iterable where и map
работают так же по смыслу, как на списке: сначала
отсекают лишние элементы, затем меняют каждый
оставшийся. Разница в том, что оба шага остаются
записью до конечного действия.
Из списка оценок можно оставить проходные баллы и перевести их в буквенные метки:
final scores = [42, 88, 55, 91, 60];
final labels = scores
.where((s) => s >= 60)
.map((score) {
if (score >= 90) {
return "A";
}
if (score >= 75) {
return "B";
}
return "C";
})
.toList();
print(labels);
Тот же прием подходит для строк: отбор по длине и приведение к верхнему регистру в одной цепочке:
final tags = ["io", "api", "log", "ui"];
final shortUpper = tags
.where((t) => t.length <= 3)
.map((t) => t.toUpperCase())
.toList();
print(shortUpper);
Дан список [-2, 0, 5, 8, 11].
Оставьте положительные числа, умножьте каждое
на два и выведите список результата.
Даны строки ["go", "kotlin", "rust"].
Отберите слова длиннее двух символов, возьмите
первые три буквы каждого и выведите список
полученных коротких фрагментов.