Повторение — элемент инвентаря
Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 11 из 57.
Задание
СреднеЗавершите структуру StockItem со свойствами name и quantity. Добавьте изменяющие методы receive(_:) (добавляет) и ship(_:) (вычитает только при наличии достаточного количества на складе и возвращает информацию о том, произошло ли это), а также неизменяющий метод label(), который возвращает tea: 12 или tea: out of stock для количества 0.
Затем завершите process(start:commands:): он создаёт элемент, сохраняет его копию под именем opening до выполнения первой команды, применяет команды и возвращает по одной строке для каждой отклонённой отгрузки (cannot ship 5), затем now с последующей меткой элемента и was с последующей меткой opening.
Предоставленный код считывает элемент в формате name,quantity, а команды — в формате +n или -n, и выводит каждую возвращённую строку.
Ваш код должен находиться в файлах StockItem.swift и Functions.swift. Файл main.swift содержит предоставленный код ввода/вывода, и его нельзя редактировать.
Попробуйте сами
// Предоставленный код ввода/вывода: оставьте его как есть
var input: [String] = []
while let line = readLine() { input.append(line) }
let p = input[0].split(separator: ",").map(String.init)
let item = StockItem(name: p[0], quantity: Int(p[1])!)
for line in process(start: item, commands: Array(input.dropFirst())) { print(line) }
Все уроки раздела Объектно-ориентированное программирование
1Классы и объекты
Работа с файламиОпределение классовМетоды и selfИнициализаторыКлассы — это ссылкиПовторение — читательский билет4Инкапсуляция
Контроль доступаТолько чтение извнеЗащита состоянияИнициализаторы с возможностью сбояПовторение — банковский счёт7Полиморфизм и обобщения
ПолиморфизмПриведение типовОбобщённые функцииОбобщённые типыПовторение — калькулятор фигур10Паттерны проектирования. Часть 2
Паттерн делегированияПаттерн декораторПаттерн строительПаттерн состояния2Структуры и типы-значения
СтруктурыСемантика значенийИзменяющие методыСтруктура или классПовторение — элемент инвентаря5Наследование
ПодклассыПереопределение методовИнициализаторы и superfinal и иерархииПовторение — иерархия сотрудников8Стандартные протоколы
CustomStringConvertibleEquatableComparableHashableПовторение — пользовательская сортировка11Проект: Управление библиотекой
Книги и читателиВыдача книгПотренируйтесь самостоятельно: Песочница Swift