我做错了什么,或者Swift应该用不断的转换来写?例如,我想定义一个NSRect
来绘制一个圆,我已经定义了一个NSPoint
,它将是它的中心,我的半径也是Float
类型,它将定义宽度和高度,但之前应该乘以Int
比例,所以我这样做:
let objectRect = NSRect(x: center.x - radius*scale ...
我收到警告,我无法将Int
乘以Float
。好的,现在看起来像这样:
let objectRect = NSRect(x: center.x - radius*Float(scale) ...
现在这部分很好,但另一个警告说Float
无法从CGFloat
中删除。另一种转换:
let objectRect = NSRect(x: Float(center.x) - radius*Float(scale) ...
看起来很糟糕,但最后警告最后警告声明NSRect不接受Float,所以我需要将它转换为Double。
答案 0 :(得分:1)
只做一次。如下面评论的那样立即使用CGFloat
:
let objectRect = NSRect(x: CGFloat(center.x) - radius* CGFloat(scale) ...
来自脚本语言的Swift类型系统可能很烦人。但是,你已经习惯了。