构造就是将结构体、类或枚举的实例准备好以便使用的过程。这个过程包括:

(1)为实例中的每个存储属性设置初始值。

(2)执行必要的准备和初始化工作。

实例的构造过程是通过构造器来完成的。

可以在结构体、类或枚举中提供自定义的构造器,从而自定义实例的构造过程。

结构体的自定义构造器的基本用法

/*
构造器就是名为init的特殊方法,其语法格式为:
init([形参列表]) {
构造体
}
与普通的方法相比,构造器没有关键字func和返回类型。 当通过“类型名([构造器的实参列表])”创建某个类型的实例时,系统会自动调用相应的自定义构造器,以完成实例的构造过程。
*/
struct SomeStruct {
var someProperty: String init(someProperty: String) {
self.someProperty = someProperty
}
} let someStruct = SomeStruct(someProperty: "SP")
someStruct.someProperty

类的自定义构造器的基本用法

/*
构造器就是名为init的特殊方法,其语法格式为:
init([形参列表]) {
构造体
}
与普通的方法相比,构造器没有关键字func和返回类型。 当通过“类型名([构造器的实参列表])”创建某个类型的实例时,系统会自动调用相应的自定义构造器,以完成实例的构造过程。
*/
class SomeClass {
var someProperty: String init(someProperty: String) {
self.someProperty = someProperty
}
} let someClass = SomeClass(someProperty: "SP")
someClass.someProperty

枚举的自定义构造器的基本用法

/*
构造器就是名为init的特殊方法,其语法格式为:
init([形参列表]) {
构造体
}
与普通的方法相比,构造器没有关键字func和返回类型。 当通过“类型名([构造器的实参列表])”创建某个类型的实例时,系统会自动调用相应的自定义构造器,以完成实例的构造过程。
*/
enum SomeEnum {
case someValue1
case someValue2
case someValue3 init(param: String) {
switch param {
case "sv1":
self = .someValue1
case "sv2":
self = .someValue2
default:
self = .someValue3
}
}
} SomeEnum(param: "sv2")

Swift构造的更多相关文章

  1. Swift 构造与析构

    前言 与 OC 一样,Swift 中也存在构造和析构过程.不同的是,OC 中的构造方法和析构方法只是普通的方法,而 Swift 中构造器和析构器是一种特殊的结构. 1.构造器 在 Swift 中,类或 ...

  2. Swift 构造过程

    构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务. Swift 构造函数使用 init() 方法. 与 Ob ...

  3. swift -- 构造/析构函数

     一.构造函数 //当一个类实例化一个对象时候,第一个调用的方法 class Student { //属性 var name = "ser" let age : Int //1.重 ...

  4. Swift 面向对象解析(二)

    接着上面一篇说的内容: 一 继承: 苹果继承与水果,苹果是水果的子类,则苹果是一种特殊的水果:这就是继承的关系,这个我们学OC的时候相信也都理解了,就不再描述定义了,下面的就叫继承: class ZX ...

  5. C++、Java、Objective-C、Swift 二进制兼容测试

    鉴于目前动态库在iOS App中使用越来越广泛,二进制的兼容问题可能会成为一个令人头疼的问题.本文主要对比一下C++.Java.Objecive-C和Swift的二进制兼容问题. iOS端动态库使用情 ...

  6. swift学习笔记之-构造过程

    //构造过程 import UIKit /* 构造过程(Initialization): 1.构造过程是使用类.结构体或枚举类型的一个实例的准备过程.在新实例可用前必须执行这个过程,具体操作包括设置实 ...

  7. Swift中类的两段式构造(类的构造过程)

    import Foundation /* 类的构造需要两个阶段: 第一阶段: 1.程序调用子类的某个构造器 2.为实例分配内存, 此时实例的内存还没有被初始化 3.指定构造器确保子类定义的所有实例存储 ...

  8. Swift 的类、结构体、枚举等的构造过程Initialization(下)

    类的继承和构造过程 类里面的全部存储型属性--包含全部继承自父类的属性--都必须在构造过程中设置初始值. Swift 提供了两种类型的类构造器来确保全部类实例中存储型属性都能获得初始值,它们各自是指定 ...

  9. Swift难点-继承中的构造规则实例具体解释

    关于继承中的构造规则是一个难点. 假设有问题,请留言问我. 我的Swift新手教程专栏 http://blog.csdn.net/column/details/swfitexperience.html ...

随机推荐

  1. ArcGIS API For Javascript_4.8-Symbol__SimpleLineSymbol

    require(["esri/symbols/SimpleLineSymbol"], function(SimpleLineSymbol) { /* code goes here ...

  2. git使用笔记1:结合Github远程仓库管理项目

    git是一个十分好用的版本控制工具,我们经常在本地使用git进行项目开发,Git 并不像 SVN 那样有个中心服务器,如果想要通过 Git 分享你的代码或者与其他开发人员合作,就需要将数据放到一台其他 ...

  3. 基于BootstarbTable实现加载更多的方式

    在工作中,我们有时候会遇到一些需求实现每次在页面上显示的数据每次都是通过请求数据库端来实现,在不通过上一页,下一页的方式来实现我们要展示的数据,通过js请求每次加载10条或者任意数量的数据. 代码展示 ...

  4. How to fix corrupt HDFS FIles

    1 问题描述 HDFS在机器断电或意外崩溃的情况下,有可能出现正在写的数据(例如保存在DataNode内存的数据等)丢失的问题.再次重启HDFS后,发现hdfs无法启动,查看日志后发现,一直处于安全模 ...

  5. 在linux中访问macos 下的分区。

    花钱的解决方案是找专业的:   Paragon Software  他们家有各种套件,让你在window Linux 都能访问到苹果分区里面的内容. 但是Windows删除了它的驱动之后一开机就蓝屏. ...

  6. 【死磕 Spring】—– IOC 之解析Bean:解析 import 标签

    原文出自:http://cmsblogs.com 在博客[死磕Spring]----- IOC 之 注册 BeanDefinition中分析到,Spring 中有两种解析 Bean 的方式.如果根节点 ...

  7. .NET Core微服务之基于Consul实现服务治理(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul ...

  8. C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计

    1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...

  9. java~lombok里的Builder注解

    lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Bu ...

  10. 如何在IIS上发布网站

    本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程: 2.在vs2017中发布 ...