在《swift编程语言》一书的开头,就有以下例子
func makeASandwich() throws {
// ...
}
do {
try makeASandwich()
eatASandwich()
} catch SandwichError.outOfCleanDishes {
washDishes()
} catch SandwichError.missingIngredients(let ingredients) {
buyGroceries(ingredients)
}
我想知道的是这条线
catch SandwichError.missingIngredients(let ingredients)
特别是语法
(let ingredients)
对我来说,看起来他们在函数调用中使用了 let 这个词,但也许我错了。无论如何,我想知道 let 这个词的目的是什么。
最佳答案
它是一个“值绑定(bind)模式”(在“枚举案例模式”中)。SandwichError
是一个具有“关联值”的枚举,类似于
enum SandwichError: Error {
case outOfCleanDishes
case missingIngredients([String])
}
每个
catch
关键字后跟一个模式,如果抛出 SandwichError.missingIngredients
错误throw SandwichError.missingIngredients(["Salt", "Pepper"])
然后
catch SandwichError.missingIngredients(let ingredients)
匹配并且局部变量
ingredients
绑定(bind)到 catch 块的关联值 ["Salt", "Pepper"]
。它的工作原理与 Matching Enumeration Values with a Switch Statement 基本相同:
关于swift - catch 表达式中 let 一词的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55509755/