22.2. 扩展的语法

使用 extension 关键字声明扩展:

extension SomeType {
  // 在这里给 SomeType 添加新的功能
}

扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样:

extension SomeType: SomeProtocol, AnotherProtocol {
  // 协议所需要的实现写在这里
}

这种遵循协议的方式在 在扩展里添加协议遵循 中有描述。

扩展可以使用在现有范型类型上,就像 泛型扩展 中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像 具有泛型 Where 子句的扩展 中描述的一样。

注意

对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。