简单计算中的模糊引用

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

也可以。当我在同一计算中组合 /% 时会发生错误。 你知道为什么吗?

由于 iInt,而其他所有内容都是 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
              ~~~~~~~ ^ ~