16.Swift学习之结构体
结构体的介绍
- 概念介绍
- 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
- 结构体是值类型
- 结构体既可以定义属性又可以定义方法
定义语法
struct 结构体名称 { // 属性和方法 }
- 举例
struct Person { var name = "Zhangsan" var age = 10 var sex = "man" func say(){ print("人会说话") } }
- 解读
- 定义了一个名叫 Person的结构体
- 这个结构体拥有两个存储属性 name、 age和 sex
- 这个结构体拥有一个方法say
结构体实例
- 实例化结构体最简单的是在结构体名字后面写上
()
,任何属性都被初始化为它们的默认值
var p1 = Person()
- 所有的结构体都有一个自动生成的
成员构造函数
来实例化结构体,可以使用它来初始化所有的成员属性
var p2= Person(name: "Lisi", age: 20, sex: "woman")
访问属性和方法
- 可以用
.
来访问一个结构体实例的属性和方法 - 访问时如果使用了赋值语句就是设置属性
//访问 p2.age //设置 p2.age = 30
//通过.调用结构体中的属性和方法 p1.name p1.age p1.sex p1.say()
结构体是值类型
- 值类型是一种当它被赋值给一个常量或者变量,或者被传递给函数时会被
拷贝
的类型 - Swift 中的结构体(包括枚举)是值类型,它在代码传递中总是会被拷贝
//值类型拷贝 var p3 = p2 //此时改变p3并不会改变p2的值 p3.name = "Wangwu" p3.age = 30 p2.age //20 p2.name //Lisi p3.age //30 p3.name //Wangwu
常用的结构体
- CGRect
/* Rectangles. */ public struct CGRect { public var origin: CGPoint public var size: CGSize public init() public init(origin: CGPoint, size: CGSize) }
- CGSize
/* Sizes. */ public struct CGSize { public var width: CGFloat public var height: CGFloat public init() public init(width: CGFloat, height: CGFloat) }
- CGPoint
/* Points. */ public struct CGPoint { public var x: CGFloat public var y: CGFloat public init() public init(x: CGFloat, y: CGFloat) }
字符串,数组和字典的赋值与拷贝行为
Swift 中的 String , Array 和 Dictionary类型是作为结构体来实现的,这意味着String , Array 和 Dictionary在它们被赋值到一个新的常量或者变量,或它们本身被传递到一个函数或方法中的时候,其实是传递了拷贝。
OC中的 NSString, NSArray和 NSDictionary,它们是作为类来实现的,所以NSString , NSArray 和 NSDictionary实例总是作为一个引用而不是拷贝来赋值和传递。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
17.Swift学习之类
类介绍 Swift虽然推荐面向协议编程,但其也是一门面向对象开发的语言 面向对象的基础是类,类产生了对象(类的实例) Swift中用class关键字定义类 定义语法 class 类名 { // 定义属性和方法 } 举例 class Person { var name = "Zhangsan" var age = 10 var sex = "man" func say(){ print("人会说话") } } 解读 定义了一个名叫 Person的类 这个类有三个变量存储属性和一个方法 类的实例 结构体一样,最简单的是在名称后面加一个(),但默认没有成员构造函数 var p1 = Person() 访问属性和方法 可以用.来访问一个实例的属性和方法 访问时如果使用了赋值语句就是设置属性 //普通构造函数 var p1 = Person() //访问 p1.age //设置 p1.age = 30 p1.name p1.sex p1.say() 类是引用类型 不同于值类型,引用类型被赋值到一个常量,变量或者本身被传递到一个函数的时候它是不会被拷贝的,而使用的是同一个对某个实例的引用。 var...
- 下一篇
让网站Http重定向Https并进行百度Https认证
先为大家带来一点福利。阿里云最近开始发放代金券了,新老用户均可免费获取,1880元代金券,建议大家都领取一份,反正是免费领的,说不定以后需要呢?阿里云代金卷链接https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=gy5l4yp9 认证地址 https://ziyuan.baidu.com/https/index 效果展示 步骤: 前提条件 你的网站http和https都能访问。我这里演示的是tomcat web容器,如果你是其它的web容器,可以自行查找百度,肯定有相应的配置方法。 配置Web.xml 重启服务 测试 通过http方式访问你的网站,如果能自动调转到https链接,访问到你的网站,就配置正常了!然后就去https://ziyuan.baidu.com/http
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路