Swift的Extension关键字

2023-07-10  本文已影响0人  小重山_

Swift的extension关键字允许我们为现有的类、结构体、枚举或协议添加新的功能,就像是给一个已经建好的房子添加新的房间或设施。这种能力使得代码更加灵活,更容易维护,也更容易理解。

假设现在有一个整数,想要得到这个整数的平方。一般来说我们可能会写一个函数来完成这个任务:

func square(number: Int) -> Int {
    return number * number
}

let number = 8
print(square(number: number))  // 输出 64

但是如果能直接在整数上调用一个方法来得到它的平方,那会更方便。这就是extension关键字的用武之地。

我们可以使用extension关键字为Int类型添加一个新的计算属性,像这样:

extension Int {
    var squared: Int {
        return self * self
    }
}

let number = 8
print(number.squared)  // 输出 64

现在,我们可以直接在任何整数上调用squared属性来得到它的平方,就像这个属性是Int类型原本就有的一样。这就是extension的作用:它可以让我们为现有的类型添加新的功能,就像这些功能是原本就存在的一样。

extension关键字的用途不仅仅是添加计算属性,还可以使用它来添加新的方法,让一个已有类型符合某个协议,甚至添加新的初始化方法和下标。这使得代码更加灵活,更容易维护。

虽然extension关键字很强大,但是它也有一些限制。首先,不能使用extension来重写已有的方法或属性;其次,不能在extension中添加存储属性,只能添加计算属性。

上一篇下一篇

猜你喜欢

热点阅读