catch表达式中的let的目的是什么?

鲍勃·乌兰德

在《快速编程语言》一书中,他们有以下示例

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的目的是什么。

马丁·R

它是“值绑定模式”(在“枚举案例模式”内部)。

SandwichError 是带有“关联值”的枚举,例如

enum SandwichError: Error {
     case outOfCleanDishes
     case missingIngredients([String])
}

每个catch关键字后面都有一个模式,如果SandwichError.missingIngredients抛出错误,

throw SandwichError.missingIngredients(["Salt", "Pepper"])

然后

catch SandwichError.missingIngredients(let ingredients)

匹配,并且局部变量ingredients绑定到["Salt", "Pepper"]catch块的关联值

它的工作原理基本上与使用Switch语句匹配枚举值

您可以使用switch语句检查不同的条形码类型,类似于将枚举值与Switch语句匹配中的示例。但是,这次,关联值被提取为switch语句的一部分。您可以将每个关联的值提取为一个常量(带有let前缀)或一个变量(带有var前缀),以便在开关盒的主体内使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是什么使GHCi中的`:t`和let表达式有区别?

来自分类Dev

C++:在 lambda 表达式中捕获的目的是什么?

来自分类Dev

此正则表达式中\\ +的含义是什么?

来自分类Dev

AngularJS表达式中的$ locals是什么?

来自分类Dev

[^。] *在正则表达式中是什么意思?

来自分类Dev

Ruby正则表达式中的“?-mix”是什么

来自分类Dev

&variable作为表达式在c中的含义是什么

来自分类Dev

在Linq表达式中=>是什么意思

来自分类Dev

AngularJS中的理解表达式是什么?

来自分类Dev

C中的子表达式是什么?

来自分类Dev

ggplot()中偏导数的表达式是什么?

来自分类Dev

SQL表达式中的括号是什么意思?

来自分类Dev

正则表达式中%s +%的含义是什么?

来自分类Dev

在OrderBy中lambda表达式的意义是什么?

来自分类Dev

在Linq表达式中=>是什么意思

来自分类Dev

“ \?”在正则表达式中是什么意思?

来自分类Dev

此表达式(({{} + [])[+ []])在JavaScript中是什么意思?

来自分类Dev

Java中此表达式的含义是什么?

来自分类Dev

\,^ @在sed表达式中是什么意思

来自分类Dev

js中的这个表达式是什么

来自分类Dev

变量:表达式在 Python 中是什么意思?

来自分类Dev

表达式 std::enable_if 中的 type* 是什么

来自分类Dev

[.] 在正则表达式中的用途是什么?

来自分类Dev

布尔表达式:'let myString = aPossibleString'的反函数是什么?

来自分类Dev

布尔表达式:'let myString = aPossibleString'的反函数是什么?

来自分类Dev

在此shell脚本中使用包含退出代码的布尔表达式的目的是什么?

来自分类Dev

Let的机制!在计算表达式中

来自分类Dev

Ocaml 中的嵌套“Let”表达式

来自分类Dev

<=表达式是什么意思?

Related 相关文章

热门标签

归档