iOS 10引入了几个用于量化测量的组件,例如:
let velocity = Measurement(value: 3, unit: UnitSpeed.metersPerSecond)
虽然冗长,但好处是您可以在不出错的情况下将其转换为任何其他单位:
// before
let velocityMetersPerSecond = 3.0
let velocityKilometersPerHour = velocityMetersPerSecond * 1000 / 60
// after
let velocityKilometersPerHour = velocity.converted(to: .kilometersPerHour)
尽管苹果公司的产品支持许多单位,但我需要的单位他们不支持。然而,苹果公司考虑到了可扩展性,引入新度量衡的一种方式是通过扩展Unit
类:
extension UnitSpeed {
static let furlongPerFornight =
UnitSpeed(symbol: "fur/ftn", converter: UnitConverterLinear(coefficient:
201.168 / 1209600.0)
}
我需要将源速度从meters/second
转换为min/km
。以下是转换的数学计算:
min / km = 1 / (m / s) * 1000 / 60
我遇到的问题是如何将源值的乘法逆(或倒数)表达为转换的一部分。以下是错误版本:
extension UnitSpeed {
// still missing 1 / source value!
static let minutesPerKilometer = UnitSpeed(symbol: "min/km",
UnitConverterLinear(coefficient: 1000.0 / 60.0)
}
return coefficient/value
。 - Martin R