这是一个有趣的情况:枚举不是某种正确的数据类型,因为该值既不是弧度也不是以度为单位,两者都只是角度而不是真正不同的东西。也
typealiasRadians = Double没有用,因为没有单元安全。
也许您可以使用如下所示的方法:
import Darwinstruct Angle { enum Unit { case Radians case Degrees case Rotations var radiansFactor : Double { switch self { case Radians: return 1 case Degrees: return 180.0 / M_PI case Rotations: return 1 / 2 / M_PI } } } var unit : Unit { didSet { value /= oldValue.radiansFactor value *= unit.radiansFactor } } var value : Double}func * (var lhs: Angle, rhs: Double) -> Angle { lhs.value *= rhs return lhs}var angle = Angle(unit: .Degrees, value: 180)angle.value // 180.0angle.unit = .Radiansangle.value // 3.141592...angle.unit = .Rotationsangle.value // 0.5哦,关于您的原始问题的答案:不,您不能。



