CGFloat - < - >双

时间:2016-05-03 22:07:02

标签: swift double operator-overloading cgfloat

在UIKit中编写图形代码是PITA。 Swift的“名义”浮点类型为Double。但是大多数UIKit图形代码使用CGFloat,它基于我手机中的芯片,似乎是Double或Float。我发现自己不得不经常使用CGFloat()和Double()变换器。

我已经考虑通过简单地提供它不断抱怨缺乏的运算符来解决问题(我喜欢添加大量的数字类型扩展):

func * (lhs:CGFloat, rhs:Double) -> Double {
    return Double(lhs) * rhs
}

func * (lhs:CGFloat, rhs:Double) -> CGFloat {
    return lhs * CGFloat(rhs)
}

func * (lhs:Double, rhs:CGFloat) -> Double {
    return lhs * Double(rhs)
}

func * (lhs:Double, rhs:CGFloat) -> CGFloat {
    return CGFloat(lhs) * rhs
}

有了这个,我就不用再关心了。我意识到关于这是否是好事会有很多意见。我得到的情况是,在32位平台上浮点数的CGFloat与Double之间可能存在细微差别,但我不确定我是否可能会看到它们。换句话说,我只能做一次这样的事情并且被fp数学在边界处分解的那些边缘情况所刺痛,或者我可以不断地将事物转换一百万次并且仍然被相同的边缘情况蜇伤。所以我的问题是,除了fp数学的边缘情况之外还有其他原因吗,不是这样做的吗?

0 个答案:

没有答案