Swift-可選型

  1. 可選型的聲明
var errorCode: String? = "404" //表示變量可以為空值,通常用var聲明
print(errorCode) // 輸出:optional("404")
  1. 可選型的基本用法
"The errorCode is " + errorCode //報(bào)錯(cuò),可選型不能直接使用
需要用解包(unwrapped)的方式使用

"Hello" + errorCode! //強(qiáng)制解包,有風(fēng)險(xiǎn)性(errorCode可能為nil)

if let errorCode = errorCode { // 推薦用法(“if-let式”解包,建立新的解包常量,可以在大括號(hào)內(nèi)持續(xù)使用)
    print("The errorCode is " + errorCode)
}  // 輸出: The errorCode is 404

//一次性解包多個(gè)變量
if  let errorCode = errorCode ,
    let errorMessage = errorMessage , errorCode == "404"{
        print("Page Not Found!")

//可選型鏈
errorCode?.uppercased() //安全解包?
var uppercasedErrorCode = errorCode?.uppercased() //仍然是可選型

//可選型變量賦值給另一個(gè)變量
let errorCode1 = errorCode == nil ? "Error!" : errorCode!
let errorCode2 = errorCode ?? "nil-Error!"  //更簡潔的寫法
}
  1. 可選型更多用法
// 區(qū)別下列3中可選型
var error1: (errorCode: Int, errorMessage: String?) = (404, "Not Found")
var error2: (errorCode: Int, errorMessage: String)? = (404, "Not Found")
var error3: (errorCode: Int, errorMessage: String?)? = (404, "Not Found")

//可選型在實(shí)際項(xiàng)目中的應(yīng)用
var ageInput: String = "16"

//隱式可選型
var errorMessage: String! = nil
errorMessage = "Not Found"
print("The message is " + errorMessage)
  1. 隱式可選型的用例
//1. 可以存放nil,可以直接使用,不用強(qiáng)制解包
//2. 常用于類的定義中(一開始設(shè)置為nil,在初始化后賦值)

var errorMessage: String! = nil
errorMessage = "Not Found"
"The message is " + errorMessage //但是如果是nil,則會(huì)直接報(bào)錯(cuò)(不安全)



class City {
  let cityName: String
  var country: Country
  init(cityName: String, country: Country) {
    self.cityName = cityName
    self.country = country
  }
}

class Country {
  let countryName: String
  var capitalCity: City! //初始化Country需要先初始化City
  init(countryName: String, capitalCity: String) {
    self.countryName = countryName
    self.capitalCity = City(cityName: capitalCity, country: self)    
  }
  func showInfo() {
    print("This is \(countryName)")
    print("The capital is \(capitalCity.cityName)")
  }
}
let china = Country(countryName: "中國", capitalCity: "北京")

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

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

  • 可選型作為swift語言中一大亮點(diǎn),也是非常重要的一個(gè)概念,為此我們要學(xué)好swift,就要把可選型學(xué)好。 什么是可...
    雷晏閱讀 543評(píng)論 0 4
  • swift 邊學(xué)邊忘.在工作中使用的oc.真是費(fèi)勁啊.這次好好做個(gè)筆記,忘了回來翻翻~學(xué)習(xí)方法:是看慕課網(wǎng)的視頻,...
    司馬捷閱讀 336評(píng)論 0 1
  • 變量或常量在某些情況下可能表示的是未被賦值的情況,若直接不對(duì)某一類型的變量賦值,會(huì)提示該變量未初始化不可用。這時(shí)就...
    水止云起閱讀 472評(píng)論 0 0
  • 1.什么是可選(Optionals)類型 Swift 的可選(Optional)類型,用于處理值缺失的情況。可選表...
    XieHenry閱讀 1,018評(píng)論 0 0
  • Optional Chaining 與 Nil Coalesce 操作 optional chaining 對(duì)象?...
    阿黎轉(zhuǎn)呀轉(zhuǎn)閱讀 363評(píng)論 0 1

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