Swift:++已被弃用 - 替代代码无法工作

5

我知道 "++" 在Swift 3中将被移除,需要使用下面的代码进行替换:

+= 1

但是在这段代码中,当我改变为上述代码时,会出现错误:

override func viewDidLoad() {
    super.viewDidLoad()

    imageView.image = images[index++]
    animateImageView()
}

当我插入以下内容时:

imageView.image = images[index += 1]

我遇到了错误。如何更改这段代码?这是一段有关图像转换的代码(如果需要,我可以贴出整个代码)。在模拟器中一切都正常,但我仍然想要进行修改。

1
+= 被称为 复合赋值运算符。与 C 不同的是,它不返回任何值。Swift 语言指南明确提到了这一点。 - Code Different
2个回答

4
如dasblinkenlight所提到的,解决方案是将增量移动到下标操作之后。
需要注意的是,这是因为它等同于后自增运算符。如果您使用++index,则会将index += 1移到下标之前。
这里有一点额外的信息:如果您将运算符想象成函数,就可以看出发生了什么。 ++运算符将具有以下实现类似于
//++ declared as postfix operator before this.
func ++ (inout num: Int) -> Int {
  let temp = num
  num = num + 1
  return temp
}

+= 运算符被实现为这样:

func += (inout lhs: Int, rhs: Int) {
  lhs = lhs + rhs
}

需要注意的重要一点是,++ 运算符返回一个 Int 值,可以在下标中使用;而 += 实际上返回 void (或不返回任何值),因此不能在下标内用作 Int


感谢您抽出时间帮助我并解释更多。我是Swift的新手,我真的准备好全力以赴。我每天都在练习并喜欢挑战。 :)必须说我喜欢Swift,并且迫不及待地想要学习更多。再次感谢。 - Pejo Zmaj

2
+= 1 移出索引器,像这样:

override func viewDidLoad() {
    super.viewDidLoad()
    imageView.image = images[index]
    index += 1
    animateImageView()
}

谢谢。如此简单,我为什么没想到自己解决呢... :)这个方法起作用了。 - Pejo Zmaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接