- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造过程 - Initialization
构造过程 (Initialization )
构造过程是为了使⽤某个类、结构体或枚举类型的实例⽽进⾏的准备过程。这个过程
包含了为实例 的每个属性设置初始值和为其执⾏必要的准备和初始化任务。
构造过程是通过定义构造器 (Initializers)来实现的,这些构造器可以看做是⽤
来创建特定类型实例的特殊⽅法。与 Objective-C 的构造器不同,Swift 的构造器⽆
需返回值,它们的主要任务是保证新实例在第⼀次使⽤前完成正确的初始化。
类实例也可以通过定义析构器 (deinitializer)在类实例释放之前执⾏特定的清
除⼯作。想了解更多关于析构器的内容,请参考析构过程。
存储型属性的初始赋值
类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值。存储型属性的
值不能处于⼀个未知的状态。
你可以在构造器 为存储型属性赋初值,也可以在定义属性时为其设置默认值。以下
章节将详细介绍这两种⽅法。
注意:
当你为存储型属性设置默认值或者在构造器 为其赋值时,它们的值是
被直接设置的,不会触发任何属性观测器 (property
observers)。
构造器
构造器在创建某特定类型的新实例时调⽤。它的最简形式类似于⼀个不带任何参数的
实例⽅法,以关键字init命名。
下⾯例⼦ 定义了⼀个⽤来保存华⽒温度的结构体Fahrenheit,它拥有⼀
个Double类型的存储型属性temperature:
struct Fahrenheit {
var temperature: Double
init() {
temperature = 32.
}
}
var f = Fahrenheit()
println(The default temperature is \(f.temperature)° Fahrenhe
// 输出 The default temperature is 32. ° Fahrenheit”
这个结构体定义了⼀个不带参数的构造器init,并在⾥⾯将存储型属
性temperature的值初始化为32. (华摄⽒度下⽔的冰点)。
默认属性值
如前所述,你可以在构造器 为存储型属性设置初始值;同样,你也可以在属性声明
时为其设置默认值。
注意:
如果⼀个属性总是使⽤同⼀个初始值,可以为其设置⼀个默认值。⽆论
定义默认值还是在构造器 赋值,最终它们实现的效果是⼀样的,只不
过默认值将属性的初始化和属性的声明结合的更紧密。使⽤默认值能让
你的构造器更简洁、更清晰,且能通过默认值⾃动推导出属性的类型;
同时,它也能让你充分利⽤默认构造器、构造器继承 (后续章节将讲
到)等特性。
你可以使⽤更简单的⽅式在定义结构体Fahrenheit时为属性temperature设置默
认值:
struct Fahrenheit {
var temperature = 32.
}
定制化构造过程
你可以通过输⼊参数和可选属性类型来定制构造过程,也可以在构造过程 修改常量
属性。这些都将在后⾯章节 提到。
构造参数
你可以在定义构造器时提供构造参数,为其提供定制化构造所需值的类型和名字。构
造器参数的功能和语法跟函数和⽅法参数相同。
下⾯例⼦ 定义了⼀个包含摄⽒度温度的结构体Celsius。它定义了两个不同的构造
器:init(fromFahrenheit:)和init(fromKelvin:),⼆者分别通过接受不同
刻度表⽰的温度值来创建新的实例:
struct Celsius {
var temperatureInCelsius: Double = .
init(fromFahrenheit fahrenheit: Double) {
temperatureInCelsius = (fahrenheit - 32. ) / 1.8
}
init(fromKelvin kelvin: Double) {
temperatureInCelsius = kelvin - 273.15
您可能关注的文档
- 第八章 电脑系统安装之4 GPT分区安装win7.pdf
- 第1讲 传感器的一般特性.ppt
- 第一章 电子口岸下载出口报关单操作说明.ppt
- 第二章 电子调速类开关简介.doc
- 概率论四五讲课后习题.ppt
- 虚假源地址网络攻击分析案例、解决方案资料.docx
- 项目部实测实量作业指导书2014.3.24摘要.pdf
- 必修2 第3篇 第3课时 以畜牧业为主的农业地域类型.ppt
- 小小电路有乾坤——手电驱动电路(一)讲述.doc
- 资源紧约束条件下的城市土地集约利_省略_汉区_两规合一_工作的探索及实践_陈涛.pdf
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)