Объяснение
Optional явно представляет значение или его отсутствие. Struct имеет семантику значения, class — ссылочную. Protocol задаёт интерфейс поведения. Принудительное раскрытие optional опасно для внешних данных.
Задача для самостоятельного решения
Как обработать строку, которая не превращается в Int?
Показать разбор ответа
Использовать if let или guard let и вернуть понятную ошибку. Принудительное ! завершит приложение на обычном неверном вводе.