Интерфейсы: определение, неявная реализация и type assertion
Содержание курса
Этикетки для посылок
На сортировочном складе каждое отправление перед отправкой получает бумажную этикетку: без неё посылку не примут на линию. У обычных коробок этикетка содержит только базовую информацию о грузе, тогда как хрупкие посылки требуют ещё и предупреждающей пометки — без неё хрупкое содержимое рискует не добраться до адресата целым. Оба типа отправлений умеют описывать себя через единое понятие «этикетка», хотя внутренне устроены по-разному.
Работник склада собирает очередную партию в общий список, не разбирая заранее, что перед ним — обычная коробка или стеклянный сервиз в пузырчатой плёнке. Его задача — пройти по всему списку в том порядке, в котором отправления были приняты, и для каждого распечатать нужный комплект строк. При этом важно не вскрывать упаковку, чтобы выяснить тип содержимого: достаточно спросить у самого отправления, умеет ли оно сообщать о своей хрупкости.
Именно так устроена программа: она хранит все отправления вместе и последовательно обращается к каждому за основной этикеткой, а затем аккуратно проверяет, способно ли данное отправление выдать предупреждение. Если да — предупреждение печатается следом; если нет — строка просто пропускается, и список продолжается дальше. В итоге на экране появляется полный комплект этикеток для всей партии в исходном порядке поступления.
Что нужно сделать
Допишите Label, Warning, фабрику makeParcel и обработку очереди. Ввод содержит ровно три строки kind weight, где kind равен box или fragile. Для каждого значения выведите box weight=N либо fragile weight=N; сразу после хрупкой посылки выведите warning=handle-with-care. Используйте срез []Labeler и безопасную type assertion к WarningLabeler с ok.
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
box 5 fragile 2 box 9
Ожидаемый выводbox weight=5 fragile weight=2 warning=handle-with-care box weight=9
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы.
Отправьте решение, чтобы увидеть результаты тестов.
