【发布时间】:2016-07-10 19:41:08
【问题描述】:
我脑子里突然冒出一个问题,当我定义一个 Swift 类型别名时会发生什么?其背后的机制是什么?直到我从 Swift 官方文档中了解到 Automatic Initializer Inheritance 一章:
如果你的子类没有定义任何指定的初始化器,它会自动继承它的所有超类的指定初始化器
这是我的学习练习代码
class Vehicle{
var numberOfWheels = 0
var description: String {
return "\(numberOfWheels) wheel(s)"
}
}
class Auto: Vehicle{}
let VM = Auto()
VM.numberOfWheels
哇!这工作,至少执行,与 Swift 类型别名完全一样。 Auto 是 Vehicle
类型的别名问题:我理解对了吗?这是类型别名背后的机制。
【问题讨论】:
-
Auto不是类型别名,它是Vehicle的子类 -
@vadian 所以类型别名实际上在它定义的原始类的同一级别。但是子类在子级别,它继承自超类
-
类型别名是一个同义词,可以用来代替原始术语,例如
NSTimeInterval是Double的类型别名,可以在任何需要Double的地方使用。
标签: swift initialization type-alias