代码之家  ›  专栏  ›  技术社区  ›  Roman Podymov

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

  •  1
  • Roman Podymov  · 技术社区  · 6 年前

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

    class A {
    
        func A() {
    
        }
    }
    

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

    extension A {
    
        static func staticFunc() {
    
        }
    
        func f() {
    
            A.staticFunc()
        }
    }
    

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Martin R    6 年前

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

    extension A {
        typealias AliasA = A
    
        static func staticFunc() { }
    
        func f() {
            AliasA.staticFunc()
        }
    }
    
        2
  •  0
  •   Fabian    6 年前

    type(of: self).staticFunc() 应该工作。 type(of: self) 获取self类型并返回它。