1

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

class A {

    func A() {

    }
}

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

extension A {

    static func staticFunc() {

    }

    func f() {

        A.staticFunc()
    }
}

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

4

2 回答 2

1

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

extension A {
    typealias AliasA = A

    static func staticFunc() { }

    func f() {
        AliasA.staticFunc()
    }
}
于 2018-07-25T18:13:47.280 回答
0

type(of: self).staticFunc()应该管用。type(of: self)接受 self 的类型并返回它。

于 2018-07-25T20:56:29.533 回答