Доступ к методу с несколькими параметрами в расширении Swift - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть метод для нормализации некоторых значений в пригодный для использования диапазон (например, от 123-987 до 0-1).

Я хочу создать расширение CGFloat для повторного использования этого.Метод принимает три параметра и возвращает CGFloat согласно подписи ниже.Как это можно сделать в расширении CGFloat, чтобы я мог сохранить результат в переменной?

func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
    //
}

Рабочий пример приведен ниже, но, похоже, это неправильно.

extension CGFloat {
    func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
        //
    }
}
let float: CGFLoat = 0 // This seems needless, but I can't see another way of accessing the method
let result = float.range(position: 200, min: 123, max: 987)

Любые предложения о том, как написать это правильно?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Вы можете сделать метод range static и затем вызвать его как:

let result = CGFloat.range(position: 200, min: 123, max: 987)

Но другим было бы удалить параметр position и использовать self.

extension CGFloat {
    func range(min: CGFloat, max: CGFloat) -> CGFloat {
        // ensure self is normalized to the range and return the updated value
    }
}

let someFloat: CGFloat = 200
let result = someFloat.range(min: 123, max: 987)
1 голос
/ 25 апреля 2019

Может быть, вы хотите сделать свой метод static

extension CGFloat {
    static func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
        //
    }
}

Тогда вы можете позвонить на CGFloat введите

let result = CGFloat.range(position: 200, min: 123, max: 987)
...