美文网首页
Swift 属性与下标

Swift 属性与下标

作者: 随心_追梦 | 来源:发表于2017-12-06 21:58 被阅读0次

swift中属性分为静态属性和存储属性,存储属性类似于OC中的数据成员,计算属性不存储数据

存储属性

存储属性适用于类、结构体(枚举只有静态存储属性)

  1. 延时存储属性
    俗称:懒加载,只有在首次调用的时候才初始化。
struct structOne {
    let name: String = "zhangsan"
}

class classOne {
    lazy var paramary: structOne = structOne()
}
  1. 计算属性
    计算属性本身并不存储数据,他通过计算返回数据。类、结构体、枚举都可以定义计算属性
    计算属性必须使用var修饰,语法结构如下:
面向对象类型  类型名 {       
        var 计算属性名: 就算属性类型 {
            get {
                return 计算后属性值
            }
            set(新属性值) {             //默认newValue
                          
            }
        }
    }

只读计算属性 (省略setter访问器,省略get{}代码)。语法如下:

var fullName: String {      
      return “sun” + “tao”  
}
  1. 属性观察者
    属性观察者能够监听存储属性的变化,不能监听延迟存储属性和常量存储属性的变化

wiiSet: 观察者在修改之前调用
didSet:观察者在修改之后调用

语法结构

面向对象类型  类型名 {

        var 存储属性:数据类型 = 初始化值 {

            willSet(新值) {
            …
            }
            didSet(旧值) {
             …
            }
        }
    }
  1. 静态属性
    3种面向对象类型(类、结构体、枚举)都可以定义静态属性,它们的语法结构分别如下:

注意:在静态计算属性中不能访问实例属性(包括存储属性和计算属性),但是可以访问其他静态属性。在实例计算属性中能访问实例属性,也能访问静态属性。

struct 结构体名 {
    static var(或let) 存储属性 = "xxx"
    static var 计算属性名:属性数据类型 {
        get {
            return 计算后的值
        }
        set(新属性值) {
            ...
        }
    }
}

枚举中不可以定义实例存储属性,但可以定义静态存储属性和静态计算属性

enum 枚举名 {
    static var (或let) 存储属性 = "xxx"
    static var 计算属性名: String {
        get {
            return "计算后的值"
        }
        set(新属性值) {
        }
    }
}

类静态计算属性如果使用static定义,该属性不能再子类中重写(override),使用class可以在子类重写

class 类名 {
    static var(或let) 存储属性 = "xxx"
    static(或class) var 计算属性名: String {
        get {
            return "计算后的值"
        }
        set(新属性值) {
            
        }
    }
}

总结如下:

类型 实例存储属性 静态存储属性 实例计算属性 静态计算属性
支持 支持 支持 支持
结构体 支持 支持 支持 支持
枚举 不支持 支持 支持 支持

下标

我们可以通过下标访问一些集合类型中的元素,它的语法结构如下:

面向对象类型  类型名 {       
        其他属性
        ...
        subscript(参数:参数数据类型) -> 返回值数据类型 {
            get {
                return 返回值
            }
            set(新属性值) {             //默认newValue
               ...
            }
        }
    }

代码示例:

//使用下标实现二位数组
struct DoubleDimensionalArray {
    
    let rows: Int, columns: Int
    var grid: [Int]
    
    init(rows: Int, columns: Int) {
        self.rows = rows;
        self.columns = columns;
        grid = Array.init(repeating: 0, count: rows * columns)
    }
    
    subscript(row: Int, column: Int) -> Int {
        get {
            return grid[row * columns + column]
        }
        set {
            grid[row * columns + column] = newValue
        }
    }
}

相关文章

  • Swift 属性与下标

    swift中属性分为静态属性和存储属性,存储属性类似于OC中的数据成员,计算属性不存储数据 存储属性 存储属性适用...

  • Swift--属性与下标

    存储属性 计算属性 属性观察者 静态属性 使用下标 存储属性 存储属性概念 存储属性可以存储数据,分为常量属性(用...

  • Swift:属性、下标与继承

    目录一,属性二,方法三,下标四,继承 一,属性 1,存储属性和计算属性 存储属性 1>它存储在实例的内存中2>结构...

  • Swift之继承、构造过程

    继承 在Swift中 ,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写这些方法,属性和下标脚本来优化或修...

  • Swift-继承(Inheritance)

    在Swift中 ,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写这些方法,属性和下标脚本来优化或修改它们...

  • Swift 继承

    在 Swift 中,类可以调用和访问 超类的方法、属性和下标,并且可以重写这些方法,属性和下标来优化或修改它们的行...

  • swift学习-属性、方法、下标

    存储属性 最简单的情形,作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值。存储属性可分为变量存储属性(...

  • iOS开发之Swift篇(13)—— 扩展

    目录 版本 扩展 计算型属性 方法 构造器 下标 嵌套类型 版本 Xcode 11.3.1Swift 5.1.3 ...

  • Swift 扩展(extension)详解

    在Swift中扩展可以: 添加计算实例属性和计算类型属性; 定义实例方法和类型方法; 提供新构造器; 定义下标; ...

  • Swift 5.x - 继承(中文文档)

    引言 继续学习Swift文档,从上一章节:下标,我们学习了Swift下标相关的内容,如下标语法、下标用法、下标选项...

网友评论

      本文标题:Swift 属性与下标

      本文链接:https://www.haomeiwen.com/subject/xmxrixtx.html