Swift 计算属性
2020-03-01 11:32
651 查看
计算属性
除存储属性外,类、结构体和枚举可以定义计算属性,计算属性不直接存储值,而是提供一个 getter 来获取值,一个可选的 setter 来间接设置其他属性或变量的值。
struct Point { var x = 0.0, y = 0.0 } struct Size { var width = 0.0, height = 0.0 } struct Rect { var origin = Point() var size = Size() var center: Point { get { let centerX = origin.x + (size.width / 2) let centerY = origin.y + (size.height / 2) return Point(x: centerX, y: centerY) } set(newCenter) { origin.x = newCenter.x - (size.width / 2) origin.y = newCenter.y - (size.height / 2) } } } var square = Rect(origin: Point(x: 0.0, y:0.0), size: Size(width: 10.0, height: 10.0)) let initialSquareCenter = square.center square.center = Point(x: 15.0, y: 15.0) println("square.origin is now at(\(square.origin.x), \(square.origin.y))") // 输出"square.origin is now at (10.0, 10.0)”
只读计算属性
只有 getter 没有 setter 的计算属性就是只读计算属性。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。
注意:
必须使用var关键字定义计算属性,包括只读计算属性,因为他们的值不是固定的。let关键字只用来声明常量属性,表示初始化后再也无法修改的值。
只读计算属性的声明可以去掉get关键字和花括号:
struct Cuboid { var width = 0.0, height = 0.0, depth = 0.0 var volume: Double { return width * height * depth } } let fourByFiveByTwo = Cuboid(width: 4.0,height: 5.0, depth: 2.0) println("the volume of fourByFiveByTwois \(fourByFiveByTwo.volume)") // 输出 "the volumeof fourByFiveByTwo is 40.0"
转载于:https://my.oschina.net/u/2613046/blog/745636
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- swift自学笔记(四)(懒加载、存储属性、计算属性、类属性、属性监听)
- 9.5 Swift计算属性, 实现setter和getter
- Swift::2::计算属性
- 9.6 Swift只读计算属性
- swift_044(Swift 计算属性和存储属性的概念以及使用)
- Swift编程语言学习9—— 存储属性和计算属性
- Swift 存储属性和计算属性
- Swift - 类的计算属性(使用get和set来间接获取/改变其他属性的值)
- Swift2.x 中类的计算属性set方法不能访问自身值
- Swift中的Lazy与计算属性
- Swift面向对象基础(中)——Swift中的存储属性和计算属性
- Swift 计算属性
- Swift基础语法-属性,存储属性,延迟存储属性,计算属性,属性观察器,类属性
- swift学习记录(计算属性和属性观察者)
- Swift中的Lazy与计算属性
- Swift基础语法: 26 - Swift的存储属性, 计算属性, 属性监视器
- Swift计算属性和存储属性的重要区别
- swift学习笔记之--类的计算属性
- Swift计算属性
- swift中的计算属性