Swift的“Self”(大写S)是什么,如何用?
在Swift中,Self是指代类型,通常是当前上下文中的当前类型。正如小写字母self可以表示任何当前对象一样,大写字母Self也可以表示几乎任何当前类型。
类和结构中的“Self”
struct Dog
{
static func createDogs(count: Int, canTalk: Bool) -> [Self] {
return (0..<count).map { _ in Dog(canTalk: canTalk) }
}
}
上面代码中大写Self指代就是当前Dog类型
协议和扩展extensions中的Self
extension Numeric {
func squared() -> Self {
return self * self
}
}
let number = 42
print(number.squared()) // 1764
Self指的是符合Numeric协议的类型。在示例中,Self将是具体类型Int,因为42它是整数。如何squared()时是Double,Self会是Double。使用Self我们