class WangMuMu {
var name: String
/*2.*/
/*
即使按照 1 里面写的来做依然是不行的
编译器会提示我们如果我们想要构建一个Self类型的对象需要有required关键字来修饰初始化方法,
这是因为Swift必须保证当前类和子类都能相应init这个方法
*/
required init() {
name = "qq"
}
//构建一个Self类型对象
func copy() -> Self {
/*1.*/
/* 我们返回的是当前类型的Self 如果我们写成 let result = WangMuMu()
则返回的是它的真实类型WangMuMu,这样编译是不通过的, 这里我们就需要用dynamicType它来做初始化了
*/
let result = self.dynamicType.init()
result.name = "1"
return result
}
}
尾记
另外dynamicType 还可以来获取一个对象的动态类型
示例
let name: String = “”
print(name.dynamicType)
输出:String