在Swift中,下划线符号是否忽略或检查switch语句中的空值?
我在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
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):