Swift: case foo (let bar): 没有类型或赋值?

Swift: case foo (let bar): without a type or assignment?

在Swift中,我了解到"let"定义了一个常量。没问题。所以 "let foo = 42" 和 "let foo: Int" 是有道理的。但我看到几个实例,其中只是 "let foo" 没有赋值或类型说明。例如"case bar (let foo): ..."

当 "let foo" 本身在这样的代码中时究竟会发生什么?

此表示法用于绑定枚举的关联值。

以此为例:

let anOptionalInt: Int? = 15

switch (anOptionalInt) {
case .Some(let wrappedValue):
    print(wrappedValue)

case .None:
    print("the optional is nil")
}

这是有效的,因为 Optional 是一个枚举。第一个表达式可以写成:

let anOptionalInt: Optional<Int> = Optional.Some(15)

有两种情况:.Some and .None。在 .Some 案例中,有一个关联值,称为 Wrapped,而 .None 案例没有关联值。

其实Optional.Nonenil是一样的。