我正在尝试一些类型(aka类)方法,但我对此类方法的现实世界应用感到困惑。例如在tutorialspoint.com的以下代码中 -
class Math
{
class func abs(number: Int) -> Int
{
if number < 0
{
return (-number)
}
else
{
return number
}
}
}
let no = Math.abs(-35)
println(no)
所以我的问题是,当我编写一个类型方法时,这里发生了什么。在我编程的哪个阶段,我可能需要这个。任何人都可以用一个清晰而简单的例子来解释。
答案 0 :(得分:2)
当您实际上不需要使类型的实例能够调用它时,这些函数很有用,例如帮助方法。以你发布的例子为例,如果你调用abs
函数,你真的不需要实例化Math
对象(你可能看起来没必要)。
如果你的abs函数不是一个类型方法,你必须像这样
var mathObject = Math()
mathObject.abs(-35)
与你在例子中的方式相符
Math.abs(-35)
两个语句都实现了相同的目标,但第二个语句更优雅(并且内存效率更高)。
使用类型方法还有其他原因,但这只是一个最简单的例子(查看单例是什么,另一个例子)
答案 1 :(得分:-1)
class C {
class func foo(){}
// Type method is always static !!!
static func boo() {}
}
class D: C {
override class func foo() {}
// this is not possible for 'Type method'
override static func boo() {} // error !!!!
}