二元运算符 + 不能应用于 CGfloat int 类型的操作数
Binary Operator + Cannot be Applied to Operands of Type CGfloat int
我遇到了与之前相同的问题,但代码行不同;但是这一次,我没能用上次的方法修复它:
var Y : Int = 0
var X : Int = 0
@IBOutlet var ball : UIImageView!
ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y)
这是我收到的错误:
binary operator + cannot be applied to operands of type CGfloat int
改为声明它们,如下所示:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
回复您的评论:
该错误与它们被声明为 var
或 let
无关。
您可以将它们声明为 var
,如果您坚持将它们声明为 Int
,您仍然需要执行以下操作:
var X : Int = 0
var Y : Int = 0
ball.center = CGPointMake(view.center.x + CGFloat(X), view.center.y + CGFloat(Y))
问题是您没有相同的变量类型,例如您不能添加 bool 和 string。
将其更改为 CGFloat 而不是 int:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
ball.center.x 是一个 CGFloat,X 是一个 Int。这就是编译器抱怨的地方。
Swift 喜欢你输入强制转换数字类型(就好像数字域中没有层次结构一样)但你可以通过将 X 和 Y 声明为 CGFloat 而不是 Int 来避免这种情况。
您也可以通过定义运算符(Swift 应该已经有了恕我直言)来彻底解决这个问题:
infix operator + {}
func +(left:CGFloat, right:Int) -> CGFloat
{ return left + CGFloat(right) }
func +(left:Int, right:CGFloat) -> CGFloat
{ return CGFloat(left) + right }
我遇到了与之前相同的问题,但代码行不同;但是这一次,我没能用上次的方法修复它:
var Y : Int = 0
var X : Int = 0
@IBOutlet var ball : UIImageView!
ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y)
这是我收到的错误:
binary operator + cannot be applied to operands of type CGfloat int
改为声明它们,如下所示:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
回复您的评论:
该错误与它们被声明为 var
或 let
无关。
您可以将它们声明为 var
,如果您坚持将它们声明为 Int
,您仍然需要执行以下操作:
var X : Int = 0
var Y : Int = 0
ball.center = CGPointMake(view.center.x + CGFloat(X), view.center.y + CGFloat(Y))
问题是您没有相同的变量类型,例如您不能添加 bool 和 string。
将其更改为 CGFloat 而不是 int:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
ball.center.x 是一个 CGFloat,X 是一个 Int。这就是编译器抱怨的地方。
Swift 喜欢你输入强制转换数字类型(就好像数字域中没有层次结构一样)但你可以通过将 X 和 Y 声明为 CGFloat 而不是 Int 来避免这种情况。
您也可以通过定义运算符(Swift 应该已经有了恕我直言)来彻底解决这个问题:
infix operator + {}
func +(left:CGFloat, right:Int) -> CGFloat
{ return left + CGFloat(right) }
func +(left:Int, right:CGFloat) -> CGFloat
{ return CGFloat(left) + right }