Как я могу вызвать глобальную функцию внутри переменной метода / свойства с тем же именем? - PullRequest
0 голосов
/ 03 мая 2018

Например, у меня есть свойство с именем 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 голосов
/ 03 мая 2018

Вы можете использовать var ceil : Double { return Demo.ceil(self); }

Здесь Demo - Имя проекта.

0 голосов
/ 03 мая 2018

Вы можете использовать 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
}
...