Добавьте больше единиц преобразования в существующие классы преобразования 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