Понимание поведения перечисления (Введение в разработку приложений с помощью Swift - Урок 19)
Я новичок в программировании и собираюсь закончить iBook "Введение в разработку приложений с помощью Swift". В настоящее время я участвую в уроке 19 "Перечисления и переключатели", и на странице 8 соответствующей игровой площадки он показывает следующий код:
enum LunchChoice {
case pasta, burger, soup
}
func cookLunch(_ choice: LunchChoice) -> String {
if choice == .pasta {
return ""
} else if choice == .burger {
return ""
} else if choice == .soup {
return ""
}
return "Erm... how did we get here?"
}
cookLunch(.soup)
По сути, это не проблема для меня, чтобы понять, но, как только я позвоню cookLunch(.soup)
последнее возвращаемое утверждение не отображается. Упражнение чуть ниже спроси меня:
попытайтесь изменить значение, переданное в cookLunch, чтобы вызывался последний оператор else
И это то, где я застрял, потому что кажется невозможным передать что-то отличное от функции cookLunch, кроме выбора, присутствующего в перечислении.
Не могли бы вы помочь мне понять смысл всего этого и, возможно, дать мне решение?
2 ответа
В ваших инструкциях написано "чтобы назывался последний оператор else". Это будет возвращение супа, а не возвращение "как мы сюда попали". Как вы говорите, с 3 вариантами обеда и 3 операторами if/else всегда будет вызываться одно из них. Вы должны добавить 4-й выбор обеда, который не имеет соответствующего if или else if для выполнения кода "как мы сюда попали".
У вас есть два варианта:
Закомментируйте третье сравнение
// } else if choice == .soup { // return ""
Добавьте четвертый случай, который не охватывается сравнениями
enum LunchChoice { case pasta, burger, soup, steak }
и передать его:
cookLunch(.steak)
Однако никто бы не стал серьезно писать такой if - else
цепь, в Свифте switch
выражение уместно
func cookLunch(_ choice: LunchChoice) -> String {
switch choice {
case .pasta: return ""
case .burger: return ""
case .soup: return ""
default: return "Erm... how did we get here?"
}
}