问题:“自我”和“自我”有什么区别?当我在超类中定义函数以返回子类的类型时,如何在函数实现中使用“Self”?
我应该代表函数调用者的自身类型返回什么类型?基类型是 NSObject 吗?
Rav*_*ati 10
在编写协议和协议扩展时,Self(大写 S)和self(小写 S)之间是有区别的。当与大写 S 一起使用时,Self指的是符合协议的类型,例如String或Int。当与小写 S 一起使用时, self 指的是该类型中的值,例如“hello Swift”或786。
例如,请考虑以下扩展名BinaryInteger:
extension BinaryInteger {
func squared() -> Self {
return self * self
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,带有大写 S 的Self指的是符合协议的任何类型。在上面的例子中,Int符合BinaryInteger,所以当调用Int该方法时,有效地读取:
func squared() -> Int {
return self * self
}
Run Code Online (Sandbox Code Playgroud)
另一方面,带有 小写 S 的self指代该类型持有的任何值。如果在存储值 8 时调用上面的示例,则实际上是这样的:Int
func squared() -> Int {
return 8 * 8
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3425 次 |
| 最近记录: |