简单计算中的模糊引用
Ambiguous reference in a simple calculation
我正在与 Xcode 和 Swift 合作 3.
我有以下行:
let x = playableRect.minX + (hexagon.size.width / 2) + (i % 4) * hexagon.size.width
哪个returns错误Ambiguous reference to member '/'
我真的不知道为什么会失败,什么时候
let x = playableRect.minX + (hexagon.size.width * 2) + (i % 4) * hexagon.size.width
有效,并且
let x = playableRect.minX + (hexagon.size.width / 2) + i * hexagon.size.width
也可以。当我在同一计算中组合 /
和 %
时会发生错误。
你知道为什么吗?
由于 i
是 Int
,而其他所有内容都是 CGFloat
,因此它不知道如何处理这些不同的类型。你需要改变它,所以一切都是 CGFloat
.
let x = playableRect.minX + (hexagon.size.width / 2) + CGFloat(i % 4) * hexagon.size.width
附带说明一下,您收到的错误消息很奇怪。您的代码中一定有其他事情导致它给您一个有点无用的错误消息。我将相同的代码放到 playground 中,得到了以下更有帮助的错误。
error: binary operator '*' cannot be applied to operands of type 'Int' and 'CGFloat'
x + (w / 2) + (i % 4) * w
~~~~~~~ ^ ~
我正在与 Xcode 和 Swift 合作 3.
我有以下行:
let x = playableRect.minX + (hexagon.size.width / 2) + (i % 4) * hexagon.size.width
哪个returns错误Ambiguous reference to member '/'
我真的不知道为什么会失败,什么时候
let x = playableRect.minX + (hexagon.size.width * 2) + (i % 4) * hexagon.size.width
有效,并且
let x = playableRect.minX + (hexagon.size.width / 2) + i * hexagon.size.width
也可以。当我在同一计算中组合 /
和 %
时会发生错误。
你知道为什么吗?
由于 i
是 Int
,而其他所有内容都是 CGFloat
,因此它不知道如何处理这些不同的类型。你需要改变它,所以一切都是 CGFloat
.
let x = playableRect.minX + (hexagon.size.width / 2) + CGFloat(i % 4) * hexagon.size.width
附带说明一下,您收到的错误消息很奇怪。您的代码中一定有其他事情导致它给您一个有点无用的错误消息。我将相同的代码放到 playground 中,得到了以下更有帮助的错误。
error: binary operator '*' cannot be applied to operands of type 'Int' and 'CGFloat'
x + (w / 2) + (i % 4) * w
~~~~~~~ ^ ~