所以我突然收到在Swift 3或(我认为)Swift 4.0上不存在的此编译器警告。 下面的代码使+ =运算符重载以执行矢量增量:
CardView
并发出警告,我感到困惑的是,有人能阐明为什么会引发警告以及出了什么问题吗?
答案 0 :(得分:1)
当您执行left += right
时,它将调用您定义的相同函数。换句话说,运算符重载函数+= ( left: inout CGVector, right: CGVector)
会一直调用自身(无限递归)。你正在做类似
func foo(String: bar) {
foo(bar)
}
但是仅将foo
替换为+=
是不合理的。 Xcode现在只给您一个警告,这不是一个使您无法编译的错误。您过去可能已经写错了此函数(但警告它刚刚添加到编译器中的警告)。
您可能想要这样的东西
public func += ( left: inout CGVector, right: CGVector) {
left = CGVector(dx: left.dx + right.dx, dy: left.dy + right.dy)
}