在swift中键入方法?

时间:2015-11-30 07:55:22

标签: ios swift

我正在尝试一些类型(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)

所以我的问题是,当我编写一个类型方法时,这里发生了什么。在我编程的哪个阶段,我可能需要这个。任何人都可以用一个清晰​​而简单的例子来解释。

2 个答案:

答案 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 !!!!
}