Swift_初始化


点击查看源码

初始化结构体

//初始化结构体
func testInitStruct() {
//结构体 类中默认方法
struct Size {
//宽
var width = 0.0
//高
var height = 0.0
} //默认初始化 使用的是init()构造方法
var size = Size()
//结构体自带根据成员初始化结构体的功能
size = Size(width: 10, height: 10)
print(size) struct Point { var x = 0.0, y = 0.0 //默认初始化
init() { } //通过成员初始化结构体
init(x:Double, y:Double) {
self.x = x
self.y = y
}
} //自定义初始化
var point = Point() //调用inin()方法
point = Point(x: 10, y: 10) //调用init(x: Double, y:Double)方法
print(point) /* print (Size #1)(width: 10.0, height: 10.0)
(Point #1)(x: 10.0, y: 10.0) */ }

初始化枚举

//初始化枚举
func testInitEnum() { enum CompassPoint:String { case North, South, East, West init(symbol: String) {
switch symbol {
case "North":
self = .North
case "South":
self = .South
case "East":
self = .East
default:
self = .West
}
} } //直接取值
var compassPoint = CompassPoint.West
print(compassPoint)
//通过原始值初始化
compassPoint = CompassPoint(rawValue: "North")!
print(compassPoint)
//通过自定义的初始化方法
compassPoint = CompassPoint(symbol: "North")
print(compassPoint) /* print West
North
North */
}

初始化类

//初始化类
func testInitClass() { class BaseClass { var name: String? //可选属性类型 可能为String或nil init() {
print("Food:init()")
} convenience init(name: String) {
self.init()
self.name = name
} //省略外部参数
convenience init(_ subName: String) {
self.init(name: subName)
}
} class SubClass: BaseClass { override init() {
super.init() //实现父类的init()方法
} } //默认初始化
var user = SubClass()
//通过属性初始化
user = SubClass(name: "XuBaoAiChiYu")
//使用init(_ name: String)初始化
user = SubClass("XuBaoAiChiYu")
// var name = ""
// name = user.name //因为name可以为nil。此处会报错,
if let name = user.name {
print(name)
} /* print Food:init()
Food:init()
Food:init()
XuBaoAiChiYu */
}

结构体初始化失败

//结构体初始化失败
func testFailableInitStruct() {
struct Animal {
let species: String
init?(species: String) {
if species.isEmpty { return nil }
self.species = species
}
}
let someCreature = Animal(species: "Giraffe")
//someCreature is of type Animal?, not Animal
if let giraffe = someCreature {
print("\(giraffe.species)")
} /* print Giraffe */
}

枚举初始化失败

//枚举初始化失败
func testFailableInitEnum() { enum TemperatureUnit:Character { case kelvin = "K", celsius = "C", fahrenheit = "F" init?(symbol: Character) {
switch symbol {
case "K":
self = .kelvin
case "C":
self = .celsius
case "F":
self = .fahrenheit
default:
return nil
}
} }
//通过自定义方法初始化
var unit = TemperatureUnit(symbol: "F")
print(unit!) //Fahrenheit
unit = TemperatureUnit(symbol: "X")
print(unit) //nil //通过原始值初始化
unit = TemperatureUnit(rawValue: "F")
print(unit!) //Fahrenheit
unit = TemperatureUnit(rawValue: "X")
print(unit) //nil /* fahrenheit
nil
fahrenheit
nil */ }

类初始化失败

//类初始化失败
func testFailableInitClass() { class Product { var name: String? init() {} init?(name: String) {
self.name = name
if name.isEmpty {
return nil
}
}
}
//可选链操作 当bowTie为真时 执行内部代码
if let qq = Product(name: "1045214799") {
print(qq.name!)
} /* Optional("1045214799") */
}

必须初始化

//必须初始化
func testRequiredInit() { class SomeClass { required init() {
//子类要调用此方法,必须继承实现
} } class SomeSubclass: SomeClass { required init() { } init(required:String) {
super.init()
//这里调用父类的init()方法 当前类必须实现init()方法
}
}
}

使用闭包或函数设置默认属性

//使用闭包或函数设置默认属性
func testSettingDefaultPropertyValueWithClosureOrFunction() {
class SomeClass { let someProperty: String = {
//create a default value for someProperty inside this closure
//someValue must be of the same type as SomeType
return "someValue"
}()
} let c = SomeClass()
print(c.someProperty) /* print someValue */ }

Swift_初始化的更多相关文章

  1. swift_初始化器的使用

    //: Playground - noun: a place where people can play import Cocoa ***************************结构体与Cla ...

  2. Swift_字符串详解(String)

    Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...

  3. Swift_语法的熟悉

    Swift_语法的熟悉 oc与swift区变 文件区别oc有实现文件以及声明文件等,在swift中实现机声明类似文件总归结一个即可 1. 常量与变量的初始化 常量 关键字"let" ...

  4. Swift_属性

    Swift_属性 点击查看源码 class DataImporter { var fileName = "data.txt" init() { print("初始化&qu ...

  5. Swift_类和结构体

    Swift_类和结构体 点击查看源码 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resoluti ...

  6. Swift_枚举

    Swift_枚举 点击查看源码 空枚举 //空枚举 enum SomeEnumeration { // enumeration definition goes here } 枚举基本类型 //枚举基本 ...

  7. Swift_字典详解

    Swift_字典详解 点击查看源码 初始化 fileprivate func testInit() { //空字典 var dic = [String:String]() print(dic) dic ...

  8. Swift_数组详解

    Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...

  9. Java初始化过程

    这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...

随机推荐

  1. Linux基础之命令练习Day7-nginx,nfs

    一. Nginx Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗 ...

  2. eclipse插件开发常见的问题及解决办法

    莫名其妙地我的某个Plug-in Projects出现了这样的Error:An API baseline has not been set for the current workspace.虽然后来 ...

  3. 07_zookeeper的客户端工具curator_基本api

    [zk原生api的不足之处] * 不能自动超时重连,需要手动操作 * watcher事件注册一次后就会失效 * 不支持递归创建节点 [ Apache curator ] * 解决了watcher的注册 ...

  4. ajax 请求调用问题

    http://localhost/dev/list 和  http://127.0.0.1/dev/list 最近在架构整体常规通用系统的解决方案,遭遇AJAX请求不执行的问题,刚开始以为Spring ...

  5. springlog记录

    在servlet.xml加入 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-aut ...

  6. linux 软连接和硬链接示意图

    创建软连接 ln -s 1.txt 1-softlink.txt 创建硬链接 ln 1.txt 1-hardlink.txt

  7. 【Leetcode】【Hard】Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  8. linux开机启动脚本

    linux开机启动脚本 linux 开机启动脚本 用户自定义开机程序(/etc/rc.d/rc.local) 操作最简单,方便.每次都自己启动PHP啊,Nginx啊 烦死了,其他方式还要弄shell啊 ...

  9. 打通 Spark 系统运行内幕机制循环流程

    本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是从后往前划分的,执行的时候是從前往后执行的,每 ...

  10. 科普文:从人人网看网络科学(Network Science)的X个经典问题

    转:https://zr9558.wordpress.com/2013/12/05/科普文:从人人网看网络科学(network-science)的x个经典问/ 长文,写了N个小时写完的.你肯定能看懂, ...