作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
尝试在返回 `CGFloat 的函数中进行算术运算,出现错误:
Couldn't find overload for '/' that accepts supplied arguments
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{
return (M_PI * (x) / 180.0) // error is here.
}
还有其他人遇到过此类问题吗?
最佳答案
这是 double
到 float
转换的问题。
在 64 位机器上,CGFloat
被定义为 double
并且您可以毫无问题地编译它,因为 M_PI
和 x
都是 double 。
在 32 位机器上,CGFloat
是一个 float
但 M_PI
仍然是一个 double。不幸的是,Swift 中没有隐式转换,因此您必须显式转换:
return (CGFloat(M_PI) * (x) / 180.0)
180.0
文字的类型已被推断。
在 Swift 3 中
M_PI
已弃用,请改用 CGFloat.pi
:
return (x * .pi / 180.0)
关于swift - 由于 Swift 缺少 CGFloat 的隐式转换而造成的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118134/
我是一名优秀的程序员,十分优秀!