swift - 类和结构体(之定义与区别)
类和结构体 结构体包括:杖举、数组、字典。即都为值类型 类为引用类型
1.定义: struct Resolution{ var width = 100 var height = 100 } class VideoMode{ var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name : String? } 2.创建类和结构体实例: let someResolution = Resolution() let someVideoMode = VideoMode()
二、值类型和引用类型 在swift语言中分值类型和引用类型。前面介绍的基础类型(Int、Float、String、Array、Dictionary等)都是值类型。值类型在赋值时就是一个拷贝过程。 (修改新值也不会影响原来的值) 对于一些复杂的类型,如类,是引用类型。如果在类对象之间发生赋值操作,就相当于该类对象被多次引用。如果使用一个引用修改类成员的值,那么其他引用对应的成员值也会发生变化。 赋值方式如: 值类型: let hd = Resolution(width:1920,height:1080) var cinema = hd cinema.width = 2048 println("cinema is now (cinema.width) pixels wide") //cinema is now 2048 pixels wide println("hd is still (hd.width) pixels wide")//hd is still 1920 pixels wide 引用类型: let vm = VideoMode() var vm1 = vm vm1.frameRate = 2.0 println("vm.frameRate is now (vm.frameRate)")//vm.frameRate is now 2.0 println("vm1.frameRate is now (vm1.frameRate)")//vm.frameRate is now 2.0
三、类对象的判断(===、!==) l.let myVideoMode1 = VideoMode() let myVideoMode2 = VideoMode()
var myVideoMode3 = myVideoMode1 //返回true if myVideoMode1 === myVideoMode3{//myVideoModel 和 myVideoMode3 引用了同一个类对象 println("myVideoModel 和 myVideoMode3 引用了同一个类对象") }else{ println("myVideoModel1 和 myVideoMode3 引用了不同的类对象") }
//返回true if myVideoMode1 !== myVideoMode2{//myVideoMode1 和 myVideoMode2引用了不同的类对象 println("myVideoMode1 和 myVideoMode2引用了不同的类对象" ) }else{ println("myVideoMode1和myVideoMode2引用了同一个类对象") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |