Свойства списка: first и last
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 1 из 65.
При работе со списками часто возникает необходимость получить доступ к первому или последнему элементу. Вместо использования индексов, таких как [0] или [list.length - 1], Dart предоставляет два удобных свойства, которые значительно упрощают эту задачу.
Свойство .first возвращает первый элемент в списке, в то время как свойство .last возвращает последний элемент. Эти свойства более читаемы и менее подвержены ошибкам, чем вычисление позиций по индексу.
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'Эти свойства работают с любым непустым списком и автоматически выполняют вычисления индексов за вас. Это делает ваш код чище и понятнее, когда вам нужно работать с элементами в начале или в конце ваших списков.
Задание
ЛегкоСоздайте программу, которая анализирует музыкальный плейлист, обращаясь к первой и последней песням. Ваша программа должна:
- Прочитать строковый ввод, представляющий название плейлиста
- Прочитать несколько строковых вводов, представляющих названия песен (ввод закончится, когда вы получите пустую строку)
- Использовать свойство
.first, чтобы получить первую песню в плейлисте - Использовать свойство
.last, чтобы получить последнюю песню в плейлисте - Вывести анализ плейлиста в точном формате, показанном ниже
Например, если название плейлиста — "My Favorites", а песни — "Bohemian Rhapsody", "Imagine", "Hotel California", ваша программа должна вывести:
Playlist: My Favorites
Total songs: 3
Opening track: Bohemian Rhapsody
Closing track: Hotel CaliforniaВаша программа должна обрабатывать плейлисты с любым количеством песен и использовать свойства .first и .last для доступа к открывающему и закрывающему трекам.
Шпаргалка
Используйте свойства .first и .last для доступа к первому и последнему элементам списка:
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'Эти свойства более читабельны, чем использование индексов, таких как [0] или [list.length - 1], и работают с любым непустым списком.
Попробуйте сами
import 'dart:io';
void main() {
// Прочитать название плейлиста
String? playlistName = stdin.readLineSync();
// Читать песни до пустой строки
List<String> songs = [];
String? song;
while ((song = stdin.readLineSync()) != null && song!.isNotEmpty) {
songs.add(song);
}
// TODO: Напишите свой код ниже
// Используйте songs.first и songs.last, чтобы получить первый и последний треки
// Вывести анализ плейлиста
print("Playlist: $playlistName");
print("Total songs: ${songs.length}");
// Вывести первый и последний треки здесь
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей