【发布时间】:2015-04-17 14:02:48
【问题描述】:
我是 Swift 编程新手(我有 HTML/CSS、JS、Jquery、PHP 等 Web 语言经验)。我正在浏览 Apple 文档和各种在线资源,但似乎找不到我的问题的答案:类中的实例方法和类型方法有什么区别?
我了解两者的语法,以及如何使用两者,但我不确定什么时候使用一个比另一个更好?您是否有理由要在不创建所述类的实例的情况下调用类中的方法?我无法将我的大脑包裹在一个实际使用的例子上。
谢谢!
【问题讨论】:
我是 Swift 编程新手(我有 HTML/CSS、JS、Jquery、PHP 等 Web 语言经验)。我正在浏览 Apple 文档和各种在线资源,但似乎找不到我的问题的答案:类中的实例方法和类型方法有什么区别?
我了解两者的语法,以及如何使用两者,但我不确定什么时候使用一个比另一个更好?您是否有理由要在不创建所述类的实例的情况下调用类中的方法?我无法将我的大脑包裹在一个实际使用的例子上。
谢谢!
【问题讨论】:
当您想要将某种功能连接到类而不强制客户端实例化该类时,以及当方法不依赖于特定对象的状态时,类方法很有用。
在面向对象的编程方法中,它们通常用于代替传统的实用程序样式函数,后者在不引用特定对象的情况下接受某种输入并返回输出,例如,具有类方法“Post”的 HTTP 路由系统" 和 "Get" 将 url 和查询参数作为参数并向服务器发送请求。这些函数在一系列不同的类中都很有用,并且不一定需要由底层实例变量来表示。
它们还可用于包含两个对象属于同一类的比较函数。假设您正在尝试计算两个矩阵对象的点积 - 选择一个对象作为比较另一个对象而不是相反的基础是没有意义的 - 特别是因为计算点积对任何一个底层矩阵对象都没有影响。那么首选的解决方案是:
class func dotProduct(a: Matrix, b: Matrix) -> Double
【讨论】: