作者: AndyRon
链接: andyron.com/2019/swift-…
- 变量声明
let optional: String? = "unicorn"
var optional2: Int?
let optionals: [String?] = ["unicorn", nil, "dragon"]
var optionals2: [Int]?
- if let
if let value = optional {
// 多变量
if let value = optional, let value2 = optional2 {
// 布尔值判断从句(boolean clause)
if let value = optional, value.hasSuffix("saurus") {
- guard
guard let value = optional else {
return
}
- while
while let value = optional {
- 空合运算((Nil Coalescing)
let value = optional ?? "nil"
- 强制解析
let value = optional!
- switch
switch optional {
case .some(let value):
print(value)
case .none:
print("nil")
}
- map()
let value = optional.map(String.init(describing:))
- flatMap()
let value = optional.flatMap(URL.init(string:))
- compactMap()
let values = optionals.compactMap { $0 }
- 类型转换
let value = optional as! String
- 可选链
let value = optional?.uppercased()
- for
for element in optionals {
if let value = element {
- for case let
for case let optional? in optionals {
- forEach
optionals?.forEach { value in
- 错误转换成optional
try? aThrowingCall()
try! aThrowingCall()