swift

81 阅读1分钟

Swift

属性

分类:

存储属性 (好比面包,直接拿来吃)

运用场景: 类,结构体

问?为什么枚举类型不能有存储属性

修饰符: var 和 let

计算属性 (有个做面包的师傅,每次新做面包)

运用场景: 类,结构体 和 枚举关联

只能用var 修改,因为它一直变

struct SomeStructure {
    var computedTypeProperty: Int {
        return 1
    }
}

类型属性 (好比世间唯一的一块82年面包,所有类型实例共享)

运用场景: 类,结构体 和 枚举关联

必须声明时就初始化,因为类型没有构造方法

struct SomeStructure {
    static var storedTypeProperty = "Some value."
    static var computedTypeProperty: Int {
        return 1
    }
}
enum SomeEnumeration {
    static var storedTypeProperty = "Some value."
    static var computedTypeProperty: Int {
        return 6
    }
}
class SomeClass {
    static var storedTypeProperty = "Some value."
    static var computedTypeProperty: Int {
        return 27
    }
    class var overrideableComputedTypeProperty: Int {
        return 107
    }
}
使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class 来支持子类对父类的实现进行重写。
​
class FatherClass {
    static var storedTypeProperty = "Some value."
    class var computedTypeProperty: Int {  //这里的class 是为了子类能重写
        return 27
    }
   
}
​
class SomeClass:FatherClass {
    class override var computedTypeProperty: Int { //class 可以换成 static
        return 107
    }
}
​
SomeClass.computedTypeProperty
//107

\