美文网首页
Swift 3.0 学习笔记之Class And Structu

Swift 3.0 学习笔记之Class And Structu

作者: WavesFisherman | 来源:发表于2016-12-07 14:15 被阅读0次

分别定义结构体和类

struct Resolution{ // 结构体

      var width=0

      var height=0

}

class VideoMode{ // 类 包含结构体,做为属性

     var resolution=Resolution()

     var interlaced=false

     var frameRate=0.0

     var name:String?

}

实例化结构体和类

let someResolution=Resolution()

let someVideoMode=VideoMode()

访问属性

print("The width of someResolution is\(someResolution.width)")  // Prints "The width of someResolution is 0"

print("The width of someVideoMode is\(someVideoMode.resolution.width)")  // Prints "The width of someVideoMode is 0"

someVideoMode.resolution.width=1280  // 与Objective-C不同,Swift允许您直接设置结构属性的子属性。

print("The width of someVideoMode is now\(someVideoMode.resolution.width)")    // Prints "The width of someVideoMode is now 1280"

结构体成员变量初始化

let vga=Resolution(width:640,height:480)  

与结构不同,类实例不接收默认的成员初始化。

Classes Are Reference Types // 类是引用类型  指针指向同一个地址,改变的是同一个对象

Structures and Enumerations Are Value Types  //结构体和枚举是值类型 ,值类型是一种类型,当其被分配给变量或常量时,或者当它被传递给函数时,它的值被复制。

let hd=Resolution(width:1920,height:1080)

var cinema=hd   // copy

cinema.width=2048

print("cinema is now\(cinema.width)pixels wide")   // Prints "cinema is now 2048 pixels wide"

print("hd is still\(hd.width)pixels wide")   // Prints "hd is still 1920 pixels wide"

Identity Operators // 身份操作符  判断两个常量或变量是否指向一个类的完全相同的实例。

===   // 是       !==    //不是          ==  // 相等,值的相等      !=  // 不相等,值的不相等

在Swift中,许多基本数据类型(如String,Array和Dictionary)被实现为结构体,也就是说他们赋值的时候都是copy ,  This behavior is different from Foundation:NSString,NSArray, andNSDictionaryare implemented as classes, not structures. 在OC中不一样了。

相关文章

网友评论

      本文标题:Swift 3.0 学习笔记之Class And Structu

      本文链接:https://www.haomeiwen.com/subject/wdolmttx.html