我是编码的新手,即将完成"使用Swift" iBook完成"应用程序开发"。我目前正在第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 if choice == .soup { // return "🍲"
-
添加第四个情况,比较不涵盖
enum LunchChoice { case pasta, burger, soup, steak }
并通过:
cookLunch(.steak)
但是,没有人会认真地写这样的if - else
链,在Swift中,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?"
}
}
您的说明说"以使最终语句称为"。那将是汤的回报,而不是"我们如何到达这里"的回报。正如您所说,有3个午餐选择和3个如果/其他陈述,将始终调用其中一个。您必须添加第四次午餐选择,该选择没有相应的话,或者如果要执行"我们如何获得这里"代码。