13-可选链

  • 可选链(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 }
}
  • 如果可选项为 nil,调用方法、下标、属性失败,结果为 nil
  • 如果可选项不为 nil,调用方法、下标、属性成功,结果会被包装成可选项
  • 如果结果本来就是可选项,不会进行再次再次包装
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()
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?

本文章只是本人的学习笔记!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值