Swift 可選鏈含代碼

Swift 可選鏈

可選鏈?zhǔn)且环N用于調(diào)用屬性、方法和下標(biāo)的過程,這些屬性、方法和下標(biāo)可能當(dāng)前為nil。愛掏網(wǎng) - it200.com如果可選項有值,則屬性、方法或下標(biāo)調(diào)用成功;如果可選項為nil,則屬性、方法或下標(biāo)調(diào)用返回nil。愛掏網(wǎng) - it200.com

您可以將多個查詢鏈接在一起,但如果鏈中的任何部分為nil,則整個鏈條將失敗。愛掏網(wǎng) - it200.com

通過在調(diào)用屬性、方法或下標(biāo)的可選值后面放置一個問號(?),可以指定可選鏈,如果可選項不為nil,則調(diào)用屬性、方法或下標(biāo)。愛掏網(wǎng) - it200.com

可選鏈 強制解包
當(dāng)可選項為nil時,可選鏈會失敗。愛掏網(wǎng) - it200.com 當(dāng)可選項為nil時,強制解包會觸發(fā)運行時錯誤。愛掏網(wǎng) - it200.com
用?操作符放在可選值之后,調(diào)用屬性、方法或下標(biāo)。愛掏網(wǎng) - it200.com 用!操作符放在可選值之后,強制解包值,調(diào)用屬性、方法或下標(biāo)。愛掏網(wǎng) - it200.com

可選鏈的示例(在基類中未聲明值的情況下)

可選鏈的結(jié)果與預(yù)期的返回值相同,但封裝在可選類型中。愛掏網(wǎng) - it200.com這意味著通過可選鏈訪問時,通常返回Int的屬性將返回Int?。愛掏網(wǎng) - it200.com

讓我們舉一個示例來看看可選鏈和強制替代之間的區(qū)別:

使用?運算符的可選鏈程序

class Exam {
   var student: Toppers?
}
class Toppers {
   var name = "Intelligent"
}
let stud = Exam()
if let studname = stud.student?.name {
   print("Student name is \(studname)")
} else {
   print("Student name cannot be retrieved")
}

輸出:

Student name cannot be retrieved 

在這里, Exam 是一個類名,包含了 student 作為成員函數(shù)。愛掏網(wǎng) - it200.com子類被聲明為 Toppers ,名字是一個成員函數(shù),它被初始化為” Intelligent “。愛掏網(wǎng) - it200.com通過創(chuàng)建一個可選的實例”stud”來初始化對超類的調(diào)用。愛掏網(wǎng) - it200.com

因為在基類中沒有聲明值,所以nil被存儲和由else處理程序塊顯示。愛掏網(wǎng) - it200.com

用于可選鏈接和訪問屬性的模型類

當(dāng)你必須聲明多個子類作為模型類時,它被使用。愛掏網(wǎng) - it200.com它使你能夠定義復(fù)雜的模型,并訪問方法、屬性、下標(biāo)、子屬性。愛掏網(wǎng) - it200.com

示例

class rectangle {
   var print: circle?
}
class circle {
   var area = [radius]()
   var cprint: Int {
      return area.count
   }
   subscript(i: Int) -> radius {
      get {
         return area[i]
      }
      set {
         area[i] = newValue
      }
   }
   func circleprint() {
      print("The number of rooms is \(cprint)")
   }
   var rectarea: circumference?
}
class radius {
   let radiusname: String
   init(radiusname: String) { self.radiusname = radiusname }
}
class circumference {
   var circumName: String?
   var circumNumber: String?
   var street: String?
   func buildingIdentifier() -> String? {
      if circumName != nil {
         return circumName
      } else if circumNumber != nil {
         return circumNumber
      } else {
         return nil
      }
   }
}
let rectname = rectangle()
if let rectarea = rectname.print?.cprint {
   print("Area of rectangle is \(rectarea)")
} else {
   print("Rectangle Area is not specified")
}

輸出:

Rectangle Area is not specified

聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 最猛91大神ben与女教师| 久久久精品免费视频| 亚洲乱人伦中文字幕无码| 亚洲欧美中文日韩欧美| 亚洲精品中文字幕无码蜜桃| 俺去俺也在线www色官网| 免费看男人j放进女人j色多多| 和桃子视频入口网址在线观看| 好妈妈5韩国电影高清中字| 欧美交换性一区二区三区| 欧美一区二区三区久久综| 欧美一区二区三区激情| 欧美午夜小视频| 福利国产微拍广场一区视频在线| 精品午夜久久网成年网| 真实国产乱子伦高清| 波多野结衣在线观看一区二区三区 | 亚洲欧洲日产国码www| 亚洲国产成人精品无码区二本 | 波多野结衣av无码久久一区 | 男女做性无遮挡免费视频| 电车上强制波多野结衣| 美女扒开小内裤| 狠狠噜天天噜日日噜视频麻豆| 污污网站免费入口链接| 欧美亚洲国产精品久久高清| 日韩小视频网站| 性欧美乱妇高清COME| 國产一二三内射在线看片| 国产特级毛片aaaaaaa高清| 国产偷自拍视频| 免费看毛片电影| 亚洲人成黄网在线观看| 亚洲导航深夜福利| 久久亚洲综合色| www.av在线免费观看| 一二三四视频中文字幕在线看| 2022国内精品免费福利视频| 黑人巨茎大战俄罗斯美女| 精品处破视频在线观看| 欧美日韩精品一区二区在线视频 |