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

Posted

技术标签:

【中文标题】Swift: case foo (let bar): 没有类型或赋值?【英文标题】:Swift: case foo (let bar): without a type or assignment? 【发布时间】:2016-11-27 21:58:32 【问题描述】:

在 Swift 中,我知道“let”定义了一个常量。没问题。所以“let foo = 42”和“let foo: Int”是有意义的。但是我看到几个例子,其中简单地编写了“let foo”而没有赋值或类型规范。例如“case bar (let foo): ...”

当“let foo”本身出现在这样的代码中时,究竟会发生什么?

【问题讨论】:

你能展示可执行的例子吗? 代码中的某处会出现类似case bar(Int)的case声明 【参考方案1】:

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

以此为例:

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.None。在.Some 情况下,有一个关联值,称为Wrapped,而.None 情况下没有关联值。

其实Optional.Nonenil是一样的。

【讨论】:

以上是关于Swift: case foo (let bar): 没有类型或赋值?的主要内容,如果未能解决你的问题,请参考以下文章

let 和 const

数组的解构赋值

ECMAScript 6 -- 数组的解构赋值

对象的解构赋值

let和const====均参考阮大神的es6入门

解构赋值