Добавьте больше единиц преобразования в существующие классы преобразования Apple

Можно ли добавить дополнительные единицы преобразования к существующим классам преобразования Apple?

https://developer.apple.com/documentation/foundation/unittemperature По приведенной выше ссылке Ранкин недоступен. Как настроить / расширить этот класс и добавить Рэнкина?

PS. Формула выборки Ренкина:5°C × 9/5 + 491.67 = 500.67°R

PPS. планирую использовать это таким образом

let celsius = Measurement(value: 4, unit: UnitTemperature.celsius)
let kelvins = celsius.converted(to: UnitTemperature.kelvin)
print(kelvins)

TIA

1 ответ

Решение

Просто следуйте документации в Dimension, который является суперклассом UnitTemperature.

UnitTemperatureБазовая единица измерения - Кельвин. Поэтому мне просто нужно было найти формулу для преобразования Ренкина в Кельвина, которая представляет собой просто линейный коэффициент (degreesKelvin = degressRakine * 5/9) и подключите его:

extension UnitTemperature {
    static var rankine = UnitTemperature(
        symbol: "°R",
        converter: UnitConverterLinear(coefficient: 5/9)
    )
}

let celsius = Measurement(value: 5, unit: UnitTemperature.celsius)
let rankin = celsius.converted(to: .rankine)
print(rankin) // => 500.66999999999996 °R
Другие вопросы по тегам