代码之家  ›  专栏  ›  技术社区  ›  Chen Li Yong

如何在同名的方法/属性变量中调用全局函数?

  •  1
  • Chen Li Yong  · 技术社区  · 7 年前

    例如,我有一个名为 ceil 在我的课堂上。在函数内部,我想调用全局函数 (用熟石膏、木板等)装天花板 .我怎么做?

    class Example : BaseClass {
        var ceil : Double { return ceil(self); } // Error: Cannot call value of non-function type 'Double';
        func round : Double { return round(self); } // Infinite recursive
        var flooring : Double { return floor(self); } // Success
    }
    

    但如果我不想使用 ceiling .我想使用 (用熟石膏、木板等)装天花板 .这种情况下我怎么做?有可能吗?我在想如果我可以调用全局函数,比如 Math.ceil(self) 如果可能的话。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Grimxn    7 年前

    您可以使用 var ceil : Double { return Darwin.ceil(self) }

    您应该为您的用例使用扩展,无需创建新类。这样,您就可以在需要时在 Double 不实例化新类

    extension Double {
      var ceil : Double { return Darwin.ceil(self) }
      var floor : Double { return Darwin.floor(self) } // Success
    }
    
        2
  •  2
  •   Chanchal Chauhan    7 年前

    您可以使用 var ceil : Double { return Demo.ceil(self); }

    在这里 Demo 是项目名称。