Swift的“Self”(大写S)和小写“self”是什么,有什么区别,如何用?

5 min read

当编写protocol和针对protocol进行扩展时,Self(大写S)和self(小写S)之间存在差异。

当与大写S一起使用时,Self指的是符合协议的类型,例如String或Int。

当与小写S一起使用时,self指的是该类型内的值,例如“hello”或556。

例如,请考虑以下扩展BinaryInteger:

extension BinaryInteger {
    func squared() -> Self {
        return self * self
    }

记住,Self大写字母S指的是符合协议的任何类型。在上面的例子中,Int符合BinaryInteger,所以在调用Int方法时返回一个Int。

在另一方面,self用小写小号是指任何值的类型成立。如果在Int存储值5时调用上面的示例,则实际上是这样5 * 5。

注意:“Self”仅在协议中可用,或者作为类中方法的结果