迁移困难++;运算符转换为Swift 3,作为三元运算符表达式的一部分

迁移困难++;运算符转换为Swift 3,作为三元运算符表达式的一部分,swift,swift3,Swift,Swift3,Swift 2-工作罚款: column = column >= (numberOfColumns - 1) ? 0 : ++column Swift 3-错误(“++”不可用:已在Swift 3中删除): 或者尝试此一错误(mutating运算符的左侧具有不可变类型“Int”): 大体上 aVar = cond ? expr1 : expr2 相当于: if cond { aVar = expr1 } else { aVar = expr2 } 因此,三元运算符代码

Swift 2-工作罚款:

column = column >= (numberOfColumns - 1) ? 0 : ++column
Swift 3-错误(“
++
”不可用:已在Swift 3中删除):

或者尝试此一错误(mutating运算符的左侧具有不可变类型“Int”):

大体上

aVar = cond ? expr1 : expr2
相当于:

if cond {
    aVar = expr1
} else {
    aVar = expr2
}
因此,三元运算符代码等价于:

if column >= (numberOfColumns - 1) {
    column = 0
} else {
    column += 1 //<- ++column
    column = column //<- assigning the result of (++column) to column !!!!!!
}

我重新打开,因为副本没有回答关于在三元运算符中使用
+=
的问题。好的,新的副本要好得多。更准确地说,导致问题的OP代码实际上是
列=列+=1
,这就是它导致错误的原因。如本答案所示,拆分为两行实际上是有效的,并给出了所需的结果。@rmaddy,我在
else
部分中的两行说明了
column=++column
是如何工作的。有什么不对吗?我的评论是基于问题中的第三行代码,而不是第二行。@rmaddy,我明白了,我应该说明我的代码是基于哪个三元运算符的。但是,无论如何,新的链接很好地描述了几乎相似的情况,我想我不需要更新。是的,我删除了我的答案,因为新的重复。您可能也希望这样做,因为副本的答案显示了使用模运算符的相同解决方案。
if cond {
    aVar = expr1
} else {
    aVar = expr2
}
if column >= (numberOfColumns - 1) {
    column = 0
} else {
    column += 1 //<- ++column
    column = column //<- assigning the result of (++column) to column !!!!!!
}
column = (column + 1) % numberOfColumns