Swift学习之属性
来源:互联网 发布:算法设计与分析陈慧南 编辑:程序博客网 时间:2024/05/27 01:01
属性
1.存储属性 就是存储在特定类或者结构体的实例的一个变量或者常量
struct FixedLengthRange { var firstValue = 3 var length = 4}let fixLengthRange = FixedLengthRange()print(fixLengthRange.firstValue)//fixLengthRange.firstValue = 4 因为fixLengthRange 是常量,其所有的属性值都不能在被修改class dataImporter { var fileName = "test.txt"}class dataManager { //必须被初始化 lazy var importer = dataImporter() var data = [String]()}let manager = dataManager()//importer现在还没被创建manager.data.append("some data")manager.data.append("another data")print(manager.importer.fileName)//importer现在被创建
2.计算属性
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) } //1.第一种setter方式 //set(newCenter){ //origin.x = newCenter.x - (size.width/2) //origin.y = newCenter.y - (size.height/2) //} //2.第二种setter方式 set{ origin.x = newValue.x - (size.width/2) origin.y = newValue.y - (size.height/2) } }}var square = Rect(origin:Point(x: 3, y: 3), size:Size(width: 3, height: 3))print(square)//如果一个计算属性只是可读的,可以省略get{}struct Cubiod { var width = 0.0 var volume :Double { return width * width * width }}
3.属性观察器 observer
willSet :在属性的值在被赋值之前调用
didSet:在属性的值被赋值之后调用
class StepCounter { var totalSteps:Int = 0 { willSet{ print("totalSteps is \(newValue)") } didSet{ if totalSteps > oldValue{ print("totalSteps is big than oldValue") } } }}var stepCounter = StepCounter()stepCounter.totalSteps = 10//类属性,用static来声明,用类或者结构体、枚举来访问,而不是类或者结构体、枚举的实例对象也访问
0 0
- Swift学习之属性
- [swift学习之十四]计算属性和存储属性
- Swift学习:2.10 属性
- Swift 属性学习笔记
- Swift之属性(Properties)
- swift之属性
- Swift学习笔记 - Swift属性只读
- 【swift】swift学习之旅!
- Swift学习笔记(八)属性
- swift学习日记(五) 属性
- Swift 基础学习(存储属性)
- swift面向对象之属性
- swift 学习笔记(23)-属性(计算属性)
- Swift 学习之路
- Swift学习之 泛型
- swift学习之数组
- swift学习之...和..<
- Swift学习之初识
- Android WebView 开发 资源释放,处理详解
- Swift学习之类和结构体
- ios开发常去的博客
- iOS--UINavigationBar使用总结
- csharp:Microsoft.Ink 手写识别(HandWriting Recognition)
- Swift学习之属性
- Retrofit+RxJava实战日志(1)-在Android Studio中配置
- Swift学习之方法
- C++使用cout补0
- “牛”是怎么死的
- springmvc 之 拦截器的实现(二)
- java160117StringTest
- Poj 2914 Minimum Cut
- java解析xml的几种方式