作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Swift 可选模式允许您像这样使用 case let:
var arrayOfOptional: [Int?] = [1, 2, nil, 4]
for case let number? in arrayOfOptional {
print("\(number)")
}
令我困惑的是 let number? 语法。在可选绑定(bind)中,未包装的版本没有 ?,但以防万一,它有。您如何解释这个结构,让您明白数字是展开的?
在功能上,以下两者之间有什么区别:
if let x = someOptional {
print(x)
}
对比
if case let x? = someOptional {
print(x)
}
最佳答案
我刚刚测试了您的第一个代码,之前从未用于模式匹配,但这是我的假设:
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
我假设这是一种模式,它在引擎盖下解包任何可选值,并且只有在它可以解包并且愿意时才继续。
if case let x? = someOptional {
print(x)
}
case let
用于模式匹配,如 switch x { case let ... }
。在您的示例中,它还将尝试解包一个可选值。如果它是 nil 它将失败
关于Swift 可选模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453826/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!