我是编码的新手,即将完成“使用Swift进行App开发简介”iBook。我目前在第19课,Enumerations和Switch,以及相关游乐场的第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)
,最后一个return语句就不会显示出来。
下面的练习问我:
尝试更改传入cookLunch的值,以便调用最后的else语句
这就是我被卡住的地方,因为除了枚举中的选择之外,似乎不可能将不同的东西传递给cookLunch函数。
你能帮助我理解这一切背后的意义,并为我提供解决方案吗?
答案 0 :(得分:2)
您有两种选择:
评论第三次比较
// } 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?"
}
}
答案 1 :(得分:1)
您的指示说“以便调用最终的其他声明”。这将是汤回归,而不是“我们如何到达这里”回归。正如你所说,有3个午餐选择和3个if / else语句,其中一个将永远被调用。您必须添加第4个午餐选择,该选择没有相应的if或者否则为了“我们如何到达这里”代码来执行。