Swift语言精要 - 属性
2023-09-11 14:16:56 时间
1. Stored Property
eg:
var number: Int = 0
2. Computed Property
eg:
var area : Double {
get {
return width * height
}
...
}
完整代码如下:
class Rectangle { var width: Double = 0.0 var height: Double = 0.0 var area : Double { // computed getter get { return width * height } // computed setter set { // Assume equal dimensions (i.e., a square) width = sqrt(newValue) height = sqrt(newValue) } } }
测试代码:
var rect = Rectangle() rect.width = 3.0 rect.height = 4.5 rect.area // = 13.5 rect.area = 9 // width & height now both 3.0
3. Property Observer(属性观察者)
class PropertyObserverExample { var number : Int = 0 { willSet(newNumber) { println("About to change to \(newNumber)") } didSet(oldNumber) { println("Just changed from \(oldNumber) to \(self.number)!") } } }
测试代码如下:
var observer = PropertyObserverExample() observer.number = 4 // prints "About to change to 4", then "Just changed from 0 to 4!"
4. Lazy Property(属性迟绑定)
class SomeExpensiveClass { init(id : Int) { println("Expensive class \(id) created!") } } class LazyPropertyExample { var expensiveClass1 = SomeExpensiveClass(id: 1) lazy var expensiveClass2 = SomeExpensiveClass(id: 2) init() { println("First class created!") } }
测试代码如下:
var lazyExample = LazyPropertyExample() // prints "Expensive class 1 created", then "First class created!" lazyExample.expensiveClass1 // prints nothing, it's already created lazyExample.expensiveClass2 // prints "Expensive class 2 created!"
相关文章
- SQL语句实现取消自增列属性
- Matlab中的自动计算的属性的默认值
- 《R语言数据挖掘》----1.10 数据属性与描述
- Xamarin XAML语言教程通过数据绑定使用Progress属性
- Xamarin XAML语言教程使用属性设置进度条的当前进度
- Xamarin XAML语言教程Progress属性设置进度条进度
- js语言评价--js 基于哈希表、原型链、作用域、属性类型可配置的多范式编程语言
- 《Core Data应用开发实践指南》一2.4 属性
- EF Code First导航属性一对一关系中注意点及配置方法
- 小程序中的常用组件,及组件的共同属性、wxcss、weui-wxss、Mustache语法、逻辑判断wx:if、wx:elif、wx:else
- es6中class类的静态方法、实例方法、实例属性、(静态属性)
- 浅析为什么使用正则RegExp.test( )方法时第一次是true第二次却是false(产生原因、lastIndex属性介绍、解决方案-去掉全局匹配、重置lastIndex属性、使用match替换test)、正则表达式匹配任意字符、语法错误Uncaught SyntaxError: Invalid regular expression-Nothing to repeat的原因
- 【数据结构/二叉树/二叉树属性】题解+详细备注(共10题)
- Cocos2d入门--1--初涉相关属性或代码