在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、结构体(小的类就是用struct来写) struct arrow{ var x=0,y=0 } 2、类(常用) class a{ var a=10 var b=20 } var b=a() //实例化 print(b.a) //10 3、类(class)与结构体(struct)的简易不同 (1)class 不能直接用 x(a:1) ,必需要定义一個 constructor struct SRectangle { var width = 200 } var sRect = SRectangle() //实例化 sRect = SRectangle(width:300) //设置里面的值,class这样的话就会报错 print(sRect.width) //300 (2)class共用赋值地址,struct赋值地址分开 1、struct var sRect = SRectangle() var sRect2 = sRect sRect2.width // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2 sRect2.width = 500 sRect.width // sRect.width 值不受 sRect2 影響還是 200 2、class var cRect = CRectangle() var cRect2 = cRect cRect2.width // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2 cRect2.width = 500 cRect.width // cRect.width 也改變成了 500 4、计算属性中的getter(描述属性如何计算及返回语句) struct data{ let name="a" var money=0 } class random { var my=data() var state="carry" var work:data{ //继承data的类型 get{ //不可忽略 switch state{ case "carry": my.money+=1000 default: my.money+=200 } return my } } } var HI=random() print(HI.my.money) //0 print(HI.work.money) //1000 HI.state="" print(HI.work.money) //1200 5、计算属性中的setter(有新值(newValue)后如何影响其他的值) struct data{ var name="a" var money=0 } class random { var my=data() var work:data{ get{ //不可忽略 return my } set{ my=newValue } } } var HI=random() HI.work=data(name:"hi",money:500) print(HI.my.money) //500 6、属性监视器,事前响应(willSet),时候响应(didSet) class money{ var tatal=0{ willSet{ print("当前\(newValue)") //本身有变量newValue } didSet{ print("增加\(tatal-oldValue)") //本身有变量oldValue } } } var money1=money() money1.tatal=1000 //当前1000 增加1000 money1.tatal=4000 //当前4000 增加3000
|
请发表评论