如何替换已弃用的" - "比较中的前缀递减运算符?

时间:2016-12-28 00:22:30

标签: swift xcode int swift3 boolean

在我使用--theX > 0之前,它运行良好。

旧代码摘录:

if --theX < 0 {
    ...
if ++theX < 0 {
    ...
if ++theX > worldSize.width + 1  {
    ...
if --theX > worldSize.height  {
    ...

下面你可以看到四行代码theX - 1 > 0或类似代码。现在我已更新到Swift 3,我认为只需将--theX更改为theX - 1theX -= 1即可。

尝试更新代码:

func move(_ point:Point, worldSize:WorldSize) -> (Point) {
    var theX = point.x 
    var theY = point.y
    switch self {
    case .left:
        if theX - 1 < 0 {
            // theX = worldSize.width - 1
            print("g.o.")
            stopped = true
        }
    case .up:
        if theY + 1 < 0 {
            // theY = worldSize.height - 1
            print("g.o.")
            stopped = true
        }
    case .right:
        if theX + 1 > worldSize.width + 1  {
            // theX = 0
            print("g.o.")
            stopped = true
        }
    case .down:
        if theY - 1 > worldSize.height {
            //  theY = 0
            print("g.o.")
            stopped = true
        }
    }
    return Point(x: theX, y: theY)
  }
}

然而,它似乎无效(&#34;无法将类型&#39; Bool&#39;的值转换为预期的参数类型&#39; Int&#39;&#34; ---&gt;使用时 - =或+ =)。如果你们想知道,这是一个Snake街机游戏,上面的功能是当蛇移动时(左,右,上,下)发生的事情

为什么会出现这个问题的任何帮助,或者可能是如何使用不同但相似的增量和减量版本( - 和++)?

1 个答案:

答案 0 :(得分:2)

语句--theX正在使用预递减运算符。它在使用之前递减theX的值,所以:

此:

if --theX > 0 {
}

相当于:

theX -= 1
if theX > 0 {
}

其他人也是如此。如果您使用的是预递减(--value)或预增量(++value),请在使用value -= 1之前将其替换为value += 1value在下一行。

if --theX > 0翻译成if theX - 1 > 0的问题是theX的值未被修改,因此您将使用错误的值{ {1}}在theX语句中构建Point时。{/}