Swift-self与Self

self

代表当前对象

Self

代表当前类型

Self一般作为返回值类型,限定返回值和方法调用者必须是同一类型(也可以作为参数类型)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protocol Runnable {
func test() -> Self
}

class Person: Runnable {
var age = 10
static var count = 0

required init() {
print(self.age)
print(Self.count)
}

func test() -> Self {
type(of: self).init()
}

}

let p = Person()
print(p.test())

输出结果

1
2
3
4
10
0
10
0