由于Swift缺乏CGFloat的隐式转换而造成的混乱
尝试在返回`CGFloat’的函数中进行算术运算,出现错误:
找不到接受提供的参数的’/’的重载
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat{
return (M_PI * (x) / 180.0) // error is here.
}
其他人看到过这种类型的问题吗?
回答:
这是一个问题double
,以float
转换。
在64位计算机上,CGFloat
定义为double
并且您将编译它而不会出现问题,因为M_PI
和x
都是双精度。
在32位计算机上,CGFloat
是,float
但M_PI
仍然是两倍。不幸的是,Swift中没有隐式强制转换,因此您必须显式强制转换:
return (CGFloat(M_PI) * (x) / 180.0)
180.0
文字的类型被推断。
M_PI
已弃用,请CGFloat.pi
改用:
return (x * .pi / 180.0)
以上是 由于Swift缺乏CGFloat的隐式转换而造成的混乱 的全部内容, 来源链接: utcz.com/qa/400588.html