类属性

p7.show()

    var origion:(x: Double, y: Double) = (0, 0)

//p3 = Person3(name: “hiName”, age: 27)   Error!

 1.斯维夫特中的总括属性不直接存款和储蓄值, 跟存款和储蓄属性分歧,
未有其余的”后端存款和储蓄与之对应”

    

    // 由于center的值是经过起源和宽高总计出来的,
所以没有必要提供二个仓库储存属性

    // 比方想得到length, 只可以透过总结获得, 而不必要外部设置,
能够设置为只读总计属性

struct Person2 {

 因为在测算属性中也足以监听到属性的改换,
所以给计算属性增多属性观看器未有别的意义

        }

    }

/*

 setter 对象.属性 = 值

        }

var l = Line3()

var r = Rect()

    //普通的性质是各种对象风姿洒脱份

l.start = 10.0

struct Person {

 */

 布局体和类常量与仓库储存属性的涉嫌

/*

struct Person3 {

    

var p = Person(name: “xiaohange”, age: 26)

struct Person5 {

 

print(line2.length)

//p2.card = “333” Error!

 

 3.枚举不得以有囤积属性, 不过允许有总结属性

    

    class var age: Int {

Person5.gender = “women”

 

            // 注意: setter能够团结传递叁个参数,
也足以接纳系统默许的参数newValue

 类是引用类型

        return 25

print(“age = (Person5.age)”)

    var age: Int = 20

var p7 = Person6()

//    class var gender: String = “man”   Error!

/*

struct Rect {

 有二种属性观看器:

    var end: Double = 0.0

    lazy var length: Double = self.getLength()

    }

    }

 

print(“center.x = (r.center.x) , center.y = (r.center.y)”)

    static var age: Int{

// 2.不可能校勘结构体 / 枚举常量对象中的值, 因为他针对的对象是一个常量;

    //类属性是素有对象共用生机勃勃份

    func show()

//p4 = Person4()  Error!

    var end: Double = 0.0

    var leghth: Double {

}

r.size = (100, 100)

/*

/*

let p3 = Person3(name: “hjq”, age: 26)

}

 

print(“name = (p.name) age = (p.age)”)

            // 假诺要利用系统自带的参数, 必须删除自定义参数

 其实Swift中的存款和储蓄属性正是以前学习OC中的普通属性,
在构造体或然类中定义的属性, 暗中认可正是储存属性

    // 通过闭包懒加载

}

line.end = 200.0

print(“p6 gender = (Person5.gender)”)

p5.show()

print(“p5 gender = (Person5.gender)”)

 2.依赖于别的值

 懒加载应用途景:

    static var gender: String = “Man”

var p5 = Person5()

 1.有望不会用到

        print(“懒加载”)

    }

    func show() {

}

        print(“age = (Person6.age)”)

line2.end = 100

    var center:(x: Double, y:Double){

    //类中一定要将计算属性定义为类属性

// 结构好对象以往不可能改过常量存款和储蓄属性

 */

 Swift语言中保有的寄放属性必需有带头值, 也正是当协会完三个对象后,
对象中具备的囤积属性必需有带头值, 不过也会有分裂,
个中延迟存款和储蓄属性能够将质量的开头化推迟到该属性第叁回被调用的时候

    // 1.假设不是 lazy属性, 定义的时候对象还从未初叶化,
所以不能够访问self;

    {

 

    var name: String = “”

        return 26

let p4:Person4 = Person4()

print(“p7 age = (Person6.age)”)

 在类中动用class, 並且类中区别意将储存属性设置为类属性

 属性观望器,形似OC中的KVO, 能够用来监听属性什么日期被改换,
仅有品质被改换才会调用

    var name: String = “hjq”

 

 */

var line2 = Line()

print(“origion.x = (r.origion.x) , origion.y = (r.origion.y)”)

}

 

 

    var start: Double = 0.0{

    // 3.而访谈一个类的个性必需通过对象方法,
所以访谈时对象已经初叶化完毕了, 能够利用self

// 能够改良类中常量中的值, 因为他俩针没错对象不是二个常量

    {

    var name: String

//        }

            return (origion.x + size.w/2, origion.y + size.h/2)

    }

var line = Line()

            origion.x = newValue.x – size.w / 2

    //普通的习性是各类对象的大器晚成份

 对应OC中的readonly属性, 所谓的只读属性正是只提供了getter方法,
未有提供setter方法

//p3.name = “hiName”  Error!

 

            print(“didSet oldValue = (oldValue)”)

/*

    func getLength() -> Double

r.origion = (0, 0)

        willSet{

var arrM = line.container

arrM.append(5 as AnyObject)

        get{

    }

 常量存储属性

 getter var value = 对象.属性

    }

        

// 类属性是有所指标共用生机勃勃份

var p2 = Person2(name: “HaRi”, age: 24, card: “1234”)

}

 

print(line.length)

class Person6 {

    var size:(w: Double, h: Double) = (0, 0)

 

}

    var age: Int

 

 类属性

    }()

 

        var arrrM:Array<Int> = []

}

    var name: String

print(“成立对象完成”卡塔尔(英语:State of Qatar)

    

        //只读属性能够轻松get{}

p.name = “HaRi”

 常量存款和储蓄属性只可以在概念时或构造时纠正,
布局好叁个对象之后无法对常量存款和储蓄属性进行退换

 */

 

        

p2.name = “helloName”

 

 只读计算属性

    //类中不许将积攒属性定义为类属性

 */

    var end:Double = 0.0

 

 1.willSet, 在安装新值早前调用

    var name: String = “hjq”

            origion.y = newValue.y – size.h / 2

r.center = (100, 100)

class Line {

        return end – start

//r.center = ((r.origion.x + r.size.w卡塔尔国 / 2, (r.origion.y + r.size.h卡塔尔 /
2卡塔尔(قطر‎    // 能够一贯在构造体中赢得, 此处可以大约

var p6 = Person5()

            print(“willSet newValue = (newValue)”)

        set{

        didSet{

        

 */

        print(“gender = (Person5.gender) name = (name)”)

    // 只读属性, 只读属性必需是变量var, 无法是常量let

 2.计算属性用于总括, 能够兑现setter和getter那三种计算办法

//print(“gender = (p5.gender)”)  Error!

 

 

    var age : Int

print(“name = (p.name) age = (p.age)”)

 延迟存款和储蓄属性

    var start: Double = 0.0

            return end – start

 计算属性

    var start:Double = 0.0

 

    var age : Int

print(“center.x = (r.center.x) , center.y = (r.center.y)”)

 

        }

    // 2.要是加上 lazy, 代表选拔时才会加载,
也正是运用到length属性时才会调用self;

 在构造体和枚举中用static

arrM.append(“1” as AnyObject)

 

    var name: String

}

 

 */

// 不得以改过类常量的指向

        print(“懒加载”)

    

//        return self.end – self.start   Error!

 

class Person4 {

 2.didSet, 在设置新值之后调用

p2.age = 25

// 1.因为构造体是值类型, 所以不能够改改布局体常量中的属性;

//能够将总计属性设置为类属性

/*

 存款和储蓄属性

}

    lazy var container: Array<AnyObject> = {

print(arrM)    // [1, 2, 3, 1, 5]

            // 注意: 计算属性不有所存款和储蓄效用, 所以不可能给总括属性赋值,
倘使赋值会爆发运转时不当

p.age = 28

    let card: String // 常量 ID Card

    }

    

 

 */

class Line2 {

/*

 

class Line3{

 

        }

 

 布局体和枚举是值类型

//        get{

p4.name = “hello xiaohange”

 能够一向为除总括属性和lazy属性之外的存款和储蓄属性加多属性观看器,
不过足以在世袭类中为父类的测算属性提供属性观看器

        return arrrM as [AnyObject]

//print(line.length())  Error!

发表评论

电子邮件地址不会被公开。 必填项已用*标注