我不是罗大锤我不是罗大锤

我不是罗大锤

我不是罗大锤我不是罗大锤

我不是罗大锤

首页首页
分类分类
标签标签
友情链接友情
日记日记
Swift Struct 计算属性Swift Struct 计算属性

Swift Struct 计算属性

&Swift

允许评论

3 个月前

通过 Youtuber:ChaoCode 的教学视频编写的笔记

一、计算属性

计算属性每次读取时都要重新计算,不适合太复杂繁重的任务。

计算属性需要满足以下三点:

  1. 必须使用 var 声明。
  2. 不可以省略类型。
  3. 至少能够 get。
struct Goods {
  let price = 100.0
  let discount = 0.8
  
  var actualPrice: Double {
    price * discount
  }
  
  /// MARK: - 或者
  var actualPrice: Double {
    // 自定 set 新值的名称 set(newPrice)
    set { discount = newValue / price }
    get { price * discount }
  }
}

二、属性观察

属性观察可以用来通知值的变化,就算新的值相同,也会触发。

通常与 存储属性 或者 继承的计算属性 搭配使用。

struct Goods {
  let price = 100.0
  let discount = 0.8
  	// 即将改变
  	willSet {
      print("折扣将要调整为 \(newValue)")
    }
  	// 已经改变
  	didSet {
      print("折扣已经调整成 \(oldValue)")
    }
  
  var actualPrice: Double {
    price * discount
  }
}
var price: Double {
  set {
    // willSet 时机
    discount = newValue / price
    // didSet 时机
  }
}

三、lazy 属性

struct Goods {
  let price: Double
  var discount: Double {
    didSet { actualPrice = price * discount }
  }
  
  // 不会在 Goods 初始化时完成计算,而是在调用时才进行计算
  lazy private(set) var actualPrice: Double = price * discount
}
目录
一、计算属性
二、属性观察
三、lazy 属性
暂无评论

在线人数:0 人

文章总浏览量:35170

Powered byNola