Swift-存储属性

来源:互联网 发布:大数据掌握的技术 编辑:程序博客网 时间:2024/06/02 03:24

存储属性

/* 1、存储属性 2、常量存储属性 */print("1、存储属性")class Person {    let name:String = "zhang"    var age:Int = 16}//结构体常量对象,它本身是一个常量,其次对应的对象不可以被修改//类常量对象,它本身是一个常量,其次它对应的对象,可以通过它来进行修改//结构体或者枚举类型:值引用;类:引用let person = Person()//(name:"wang",age:16)//person.name = "wang"person.age = 18/* 3、延迟存储属性 Swift中所有的存储属性必须要有初始值,类以及结构体对象定义完之后,对象中所有的存储属性必须要有初始值,例外:延迟属性可以将属性的初始值化向后推迟到该属性第一次被调用时 作用:    (1)属性不适合一开始初始化    (2)属性有可能从来不用,但是初始化又需要很长时间 */print("\n3、延迟存储属性")struct MyStudent {    var name:String    var chinese:Double    var math:Double    func showStudent(){        print("姓名:\(name),语文:\(chinese),数学:\(math)")    }}class MyClass{    var members:[MyStudent] = []    //班级学生总成绩  lazy关键字延迟存储属性    lazy var score:Double = self.getSorce()    func getSorce() -> Double {        print("lazy property")        var sum :Double = 0        for i in members {            sum += i.chinese            sum += i.math        }        if members.count > 0 {            return sum / Double(members.count)        }else{            return 0        }    }    func show(){        for i in members {            i.showStudent()        }    }}let s0 = MyStudent(name:"zhang",chinese:100,math:100)let s1 = MyStudent(name:"wang",chinese:90,math:90)let c0 = MyClass()c0.members.append(s0)c0.members.append(s1)c0.show()//print(c0.getSorce())print("======")print(c0.score)


2 0
原创粉丝点击