代码截图
代码出处: Swift Tips 032 by John Sundell[1]
小笔记
这段代码在说什么
这段代码为 Bool 类型进行了扩展,并利用扩展为现有的 Bool 类型添加了一个新的构造器:init(input: String)
。当输入参数为 y
, yes
, ????
的时候,构造出来的实例值为 true,其余情况则为 false,需要提醒的是 Bool 类型是一个结构体,也是值类型。
值类型和类类型的构造过程
我们都知道,构造器可以通过调用其它构造器来完成实例的部分构造过程,这一过程被称为构造器代理(initializer delegation),这种模式能避免多个构造器间的代码重复。
但是构造器代理的实现规则和组织形式在值类型(value type)和类类型(class type)中有所不同。
值类型是不支持继承的,例如枚举和结构体,所以它们的构造器代理过程相对简单,因为它们只能代理给自己的其它构造器。