迁移困难++;运算符转换为Swift 3,作为三元运算符表达式的一部分
Swift 2-工作罚款:迁移困难++;运算符转换为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 } 因此,三元运算符代码
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