Swift的实例方法和类型方法的区别

The difference between Swift's instance methods and type methods

我是 Swift 编程新手(我有 HTML/CSS、JS、Jquery、PHP 等网络语言经验)。我正在浏览 Apple 文档和各种在线资源,但我似乎无法找到我的问题的答案:classes 中的实例方法和类型方法有什么区别?

我理解两者的语法以及如何使用两者,但我不确定什么时候使用其中一个比另一个更好?您是否有理由想要在 class 中调用方法而不创建上述 class 的实例?我无法全神贯注于一个人对另一个人的使用的实际例子。

谢谢!

当您想将某种功能连接到 class 而不强制客户端实例化 class 时,class 方法很有用取决于特定对象的状态。

在面向对象的编程方法中,它们通常用于代替传统的实用型函数,后者采用某种输入和 return 输出而不引用特定对象,例如 HTTP 路由具有 class 方法 "Post" 和 "Get" 的系统将 url 和查询参数作为参数并向服务器发送请求。这些函数在一系列不同的 class 中很有用,并且不一定需要由基础实例变量表示。

它们还可以用于包含两个对象相同的比较函数 class。假设您正在尝试计算两个矩阵对象的点积——选择一个对象作为比较另一个对象而不是其他对象的基础是没有意义的——尤其是因为点积的计算对任何一个底层矩阵对象都没有影响。那么首选的解决方案是这样的:

 class func dotProduct(a: Matrix, b: Matrix) -> Double