简单计算中的模糊引用

时间:2016-11-15 20:09:27

标签: swift modulo

我正在使用Xcode和Swift 3。

我有以下一行:

let x = playableRect.minX + (hexagon.size.width / 2) + (i % 4) * hexagon.size.width

返回错误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

也有效。当我在同一计算中合并/%时,会发生错误。 你知道为什么吗?

1 个答案:

答案 0 :(得分:1)

由于iInt,而其他所有内容都是CGFloat,因此它不知道如何处理这些不同的类型。您需要更改它,以便所有内容都是CGFloat

let x = playableRect.minX + (hexagon.size.width / 2) + CGFloat(i % 4) * hexagon.size.width

在旁注中,您收到的错误消息很奇怪。你的代码中肯定会有其他东西导致它给你一个无用的错误信息。我将相同的代码放入游乐场并得到以下错误,这更有帮助。

error: binary operator '*' cannot be applied to operands of type 'Int' and 'CGFloat'
x + (w / 2) + (i % 4) * w
              ~~~~~~~ ^ ~