Swift可选模式允许你像这样使用case:
var arrayOfOptional: [Int?] = [1, 2, nil, 4]
for case let number? in arrayOfOptional {
print("\(number)")
}
Run Code Online (Sandbox Code Playgroud)
令我困惑的是让号码?句法.在可选绑定中,展开的版本没有?,但是如果让它,它确实.你如何解释这个结构,让你有意义解读这个数字?
从功能上讲,下面两者之间有什么区别:
if let x = someOptional {
print(x)
}
Run Code Online (Sandbox Code Playgroud)
与
if case let x? = someOptional {
print(x)
}
Run Code Online (Sandbox Code Playgroud)
我刚刚测试了您的第一个代码,以前从未用于模式匹配,但这是我的假设:
var arrayOfOptional: [Int?] = [1, 2, nil, 4]
for case let number in arrayOfOptional {
print("\(number)")
}
// will return 3 optional ints and a nil
for case let number? in arrayOfOptional {
print("\(number)")
}
// will return only any values that could be unwrapped
Run Code Online (Sandbox Code Playgroud)
我认为这是一种模式,它会在引擎盖下解开任何可选值,并且只有在可以解开并且愿意的情况下才继续进行。
if case let x? = someOptional {
print(x)
}
Run Code Online (Sandbox Code Playgroud)
case let用于模式匹配,例如switch x { case let ... }. 在您的示例中,它还会尝试解开可选值。如果它是零,就会失败
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |