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

时间:2018-05-03 08:12:31

标签: swift function methods call naming

例如,我的班级中有一个名为ceil的属性。在函数内部,我想调用全局函数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。我想使用ceil。在这种情况下我该怎么做?可能吗?我想如果可能的话,我可以调用Math.ceil(self)这样的全局函数。

2 个答案:

答案 0 :(得分:2)

您可以使用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
}

答案 1 :(得分:1)

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

此处Demo是项目名称。