Swift可選型(optional)各種用法示例

Swift可選型(optional)各種用法示例
原文:optionals

the optionals

let optional: String? = "unicorn"
var optional2: Int?
let optionals: [String?] = ["unicorn", nil, "dragon"]
var optionals2: [Int]?

if let

if let value = optional {

multiple variables

if let value = optional, let value2 = optional2 {

boolean clause

if let value = optional, value.hasSuffix("saurus") {

guard

guard let value = optional else { 
  return
}

while let

while let value = optional {

nil coalescing

let value = optional ?? "nil"

force unwrapping

let value = optional!

switch block

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 }

type casting

let value = optional as! String

optional chaining

let value = optional?.uppercased()

for loop

for element in optionals {
  if let value = element {

for case let

for case let optional? in optionals {

for case .some

for case .some(let value) in optionals {

forEach

optionals2?.forEach { value in

assignment

assigns if the optional has a value
optional2? = 2014

pattern matching

switch optional {
case "unicorn"?:
  print("Unicorn!")
default:
  print("Not Unicorn")
}

enums

enum Animal {
  case pet(type: String?)
}

switching with associated optionals

let enumValue = Animal.pet(type: optional)
switch enumValue {
case .pet(.some(let value)):
  print("I am a \(value).")
case .pet(.none):
  print("I am unknown.")
}

switching on optional enums

let enumValue2: Animal? = nil
switch enumValue2 {
case .pet?:
  print("Pets")
default:
  print("No pets.")
}

參考

Apple Developer Documentation: Optional
The Complete Guide to Optionals in Swift
Swift optionals explained simply
Extending optionals in Swift

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 生娃前,你可文藝,可小資,可以拉起行李箱隨時(shí)來場說走就走的旅行。甚至不明白,怎么那么多人總是邁不開步子去過自己想要...
    Abby大陶子閱讀 382評論 1 1
  • 這是MrKevin 365天寫作計(jì)劃中第8天的寫作內(nèi)容。 大年初一,最重要的事情是拜年,順便發(fā)紅包。由于今年舉家都...
    MrKevin閱讀 267評論 0 0
  • compile'liji.library.dev:citypickerview:0.7.0' private vo...
    卓而不群_0137閱讀 384評論 0 0
  • 今天還是像往常一樣,早早起來給大寶做好飯,叫他起床,起來洗漱完后開始吃飯,可是馬上快到點(diǎn)了老二還沒有醒,怎么辦啊...
    兩個(gè)千金閱讀 169評論 0 0

友情鏈接更多精彩內(nèi)容