gpt4 book ai didi

swift - 如果不需要多个实例,使用类型方法而不是实例方法是否更好

转载 作者:行者123 更新时间:2023-11-28 10:45:40 24 4
gpt4 key购买 nike

我开始理解 OOP

是不是用MyClass.myFunction()比较好,其中

class MyClass {
static func myFunction() {
// Do suff
}
}

或者做 MyClass().myFunction() 会更好吗

class MyClass {
func myFunction() {
// Do suff
}
}

对我来说,我不需要多个实例,所以我应该坚持第一个吗?

最佳答案

编写实例方法与静态方法的选择与您打算创建的实例数量无关,而与方法实际需要做什么有关。如果您的方法需要访问正在调用它的实例的任何属性,那么它显然需要是一个实例方法。例如,如果不需要访问任何属性,并且方法是与类相关的帮助器,那么静态方法可能有意义。

例如:

class MyClass {

var id: String

init(id: String) {...}

func printId() {
print(self.id)
}

static func className() -> String {
return "MyClass"
}

}

这将允许您通过调用静态方法 MyClass.className() 获取类的名称而无需实例。如果您有一个实例并且想要 id,您可以调用实例方法 printId

let instance = MyClass(id: "abc")
instance.printId() //prints "abc"

这显然是一个过度简化的示例,但它说明了在决定如何声明方法时需要问的最基本的问题之一。

作为很好地使用静态方法的一个更好的例子,您可能有一个静态方法负责从外部 API 获取实例化您的类所需的数据。这作为静态方法最有意义,因为在 API 调用完成(并返回所需的所有属性)之前,您不会拥有创建实例所需的内容。

关于swift - 如果不需要多个实例,使用类型方法而不是实例方法是否更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48633457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com