美文网首页
13-可选链

13-可选链

作者: 二斤寂寞 | 来源:发表于2023-04-10 11:20 被阅读0次

可选链(Optional Chaining)

class Car { var price = 0 } 
class Dog { var weight = 0 } 
class Person { 
    var name: String = ""
    var dog: Dog = Dog()
    var car: Car? = Car()
    func age() -> Int { 18 }
    func eat() { print("Person eat") } 
    subscript(index: Int) -> Int { index }                                              
}
var person: Person? = Person() 
var age1 = person!.age() // Int 
var age2 = person?.age() // Int? 
var name = person?.name // String? 
var index = person?[6] // Int?
func getName() -> String { "jack" } 
// 如果person是nil,不会调用getName() 
person?.name = getName()                 
  • 如果可选项为nil,调用方法、下标、属性失败,结果为nil
  • 如果可选项不为nil,调用方法、下标、属性成功,结果会被包装成可选项
  • 如果结果本来就是可选项,不会进行再次包装
if let _ = person?.eat() { // ()? 
    print("eat调用成功")                                              
} else { 
    print("eat调用失败")                                              
} 
var dog = person?.dog // Dog?
var weight = person?.dog.weight // Int? var price = person?.car?.price // Int? 
  • 多个?可以链接在一起
  • 如果链中任何一个节点是nil,那么整个链就会调用失败

可选链

var scores = ["Jack": [86, 82, 84], "Rose": [79, 94, 81]]
scores["Jack"]?[0] = 100
scores["Rose"]?[2] += 10
scores["Kate"]?[0] = 88
var num1: Int? = 5
num1? = 10 // Optional(10)
var num2: Int? = nil
num2? = 10 // nil
var dict: [String : (Int, Int) -> Int] = [
    "sum" : (+),
    "difference" : (-)
]
var result = dict["sum"]?(10, 20) // Optional(30), Int?

相关文章

  • [Swift5.1] 13-可选链

    可选链(Optional Chaining) 可选项包装 如果可选项为nil,调用方法、下标、属性失败,结果为ni...

  • Swift-13.可选类型深入探讨

    本章包含内容: 可选类型深入探讨 可选链的介绍 可选链的返回值 可选链调用下标索引 可选链的赋值操作 基于多层链接...

  • swift3语法(十三)

    可选链 定义可选链在取值可能为空的属性、方法、下标后面加上 ? 就表示一个可选链在可选值后面加上 ! 来强制展开,...

  • swift面向对象基础<三>

    接下来就讨论一下可选链,类型属性和类型方法,构造器 1.可选链是用于处理可选类型的属性,方法和下标2.使用可选链代...

  • iOS开发 - 「Swift 学习」Swift 可选链

    Swift 可选链 可选链的定义:可选链是可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil...

  • 十三、可选链、协议、元类型

    可选链 可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 如果可选项是 nil ,属性、方法或者...

  • 【骚操作系列】一、如何通过babel配置使用可选链`?.`和双问

    如何通过babel配置使用可选链?.和双问号?? 什么是可选链 https://developer.mozilla...

  • 可选链

    可选链(Optional Chaining) 如果可选项为nil,调用方法、下标、属性失败,结果为nil 如果可选...

  • 15 可选链和异常处理

    1. 可选链 1.1 可选链的概念 它的可选性体现于请求或调用的目标当前可能为空(nil)如果可选的目标有值,那么...

  • Swift - 可选链

    可选链 可选链 它的可选性体现于请求或者调用的目标当前可能为空 (nil)如果可选的目标有值,那么调用就会成功;如...

网友评论

      本文标题:13-可选链

      本文链接:https://www.haomeiwen.com/subject/beweddtx.html