枚举行为理解(以Swift -Swift -19课介绍)



我是编码的新手,即将完成"使用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个如果/其他陈述,将始终调用其中一个。您必须添加第四次午餐选择,该选择没有相应的话,或者如果要执行"我们如何获得这里"代码。

最新更新