如何调用具有与该类相同名称的函数的类的静态方法?

时间:2018-07-25 17:27:38

标签: swift swift3 static swift4 extension-methods

在使用Swift 3.3创建的应用程序中,我具有以下类:

class A {

    func A() {

    }
}

现在,我需要使用静态函数和调用此静态函数的非静态函数创建扩展。我有这个草稿:

extension A {

    static func staticFunc() {

    }

    func f() {

        A.staticFunc()
    }
}

但是此代码不可编译。我该如何解决这个问题?我无法删除或重命名func A。迁移到Swift 4.1不能解决问题。

2 个答案:

答案 0 :(得分:1)

如果无法重命名该功能,则(本地)类型别名 可以定义为解决方法:

extension A {
    typealias AliasA = A

    static func staticFunc() { }

    func f() {
        AliasA.staticFunc()
    }
}

答案 1 :(得分:0)

type(of: self).staticFunc()应该可以工作。 type(of: self)接受自身的类型并返回它。