Published 2022-03-21

Swift - 扩展

扩展(Extensions)是 Swift 中一种强大的特性,它允许我们向现有类型添加新的功能,包括方法、计算属性和下标等,而不需要修改原始类型的声明。

在 Swift 中,我们可以使用扩展来完成以下任务:

使用扩展可以使代码更加模块化,易于维护和扩展。以下是一个示例:

// 当前版本的 Swift 中,所有基本类型都是结构体

// 添加一个名为 squared 的计算属性来计算整数的平方,返回一个新的整数
extension Int {
    var squared: Int {
        return self * self
    }
    // 添加一个 mutating 方法来计算自身平方
    mutating func square() {
        self = self.squared
    }
}
// 对于给定的整数,可以使用点语法来访问 squared 属性和 square() 方法
let x = 5
print(x.squared) // 输出 "25"

var y = 7
y.square()
print(y) // 输出 "49"

在上面的示例中,我们向 Swift 中的 Int 类型添加了一个扩展。扩展中包含一个计算属性 squared 和一个 mutating 方法 square,用于计算整数的平方。可以通过使用点语法访问 squared 和调用 square() 方法在 Int 类型的所有实例中使用这些功能。

需要注意的是,扩展不能添加存储属性或添加必须由结构体或类定义的初始化器。此外,扩展也不能覆盖现有的方法或属性。除此之外,使用扩展的过程与定义原始类型的方法相同,因此扩展的函数和方法可以在同一文件中定义,并像原始代码一样被编译和执行。

总之,使用扩展的代码可以增强 Swift 中类型的灵活性和可读性,从而使代码更加模块化和高效,减少命名冲突和重复代码的出现。