在Swift中,下划线符号是否忽略或检查switch语句中的空值?

在Swift中,下划线符号是否忽略或检查switch语句中的空值?,swift,switch-statement,optional-binding,Swift,Switch Statement,Optional Binding,我在Swift中有一个switch语句,如下所示: switch tuple { case (let someObject, let current, nil): return true // Other cases... } 元组的类型是(SomeObject?,SomeObject,SomeObject?),我用英语说的是:匹配前两个元素不是nil的情况,而第三个(可选)元素是nil Xcode 7告诉我,既然我没有使用绑定someObject和curre

我在Swift中有一个switch语句,如下所示:

switch tuple {
    case (let someObject, let current, nil):
        return true

    // Other cases...
}
元组的类型是
(SomeObject?,SomeObject,SomeObject?
),我用英语说的是:匹配前两个元素不是nil的情况,而第三个(可选)元素nil

Xcode 7告诉我,既然我没有使用绑定
someObject
current
,我应该用下划线替换它。但是如果我用下划线替换元组中的第一个元素,它是否也会匹配第一个元素为nil的情况,因为
\uu
意味着编译器忽略该值?对于第一个元素为零的情况,我有一个单独的例子


作为记录,我的代码看起来仍然像我期望的那样工作,但我想确定一下,我在任何地方都找不到关于这一点的任何文档。

下划线匹配任何值(nil或非nil),但这也是 您的模式的案例:

case (let someObject, let current, nil):
其中第一个
让someObject
匹配任何值(nil或非nil)。因此,这实际上并没有像您预期的那样起作用

可选类型定义为枚举:

enum Optional<T> : ... {
    case None
    case Some(T)
    // ....
}
匹配第一个元素不是nil和最后一个元素的情况 元素为零。
(SomeObject?,SomeObject,SomeObject?
的中间元素不是可选的,因此不能为零

Swift 2/Xcode 7开始,可以将
x?
模式用作同义词 对于
。一些(x)
,在您的情况下

case (_?, _, nil):
匹配第一个元素不是nil,最后一个元素是nil的情况

case (_?, _, nil):