加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift - 类和结构体(之定义与区别)

发布时间:2020-12-14 07:03:23 所属栏目:百科 来源:网络整理
导读:类和结构体 结构体包括:杖举、数组、字典。即都为值类型 类为引用类型 类 结构体 杖举 属性 支持 支持 支持 定义方法 支持 支持 支持 附属脚本 支持 支持 支持 构造器 支持 支持 支持 扩展来增强类或结构体默认实现的功能 支持 支持 支持 支持协议 支持 支

类和结构体

结构体包括:杖举、数组、字典。即都为值类型

类为引用类型

结构体 杖举
属性 支持 支持 支持
定义方法 支持 支持 支持
附属脚本 支持 支持 支持
构造器 支持 支持 支持
扩展来增强类或结构体默认实现的功能 支持 支持 支持
支持协议 支持 支持 支持
继承 支持 不支持 不支持
类型转换 支持 不支持 不支持
析构方法 支持 不支持 不支持
引用计数的方式 支持 不支持 不支持

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引用了同一个类对象")

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读