如何在 Swift 中正确使用条件运算符

How to properly use conditionak operator in Swift

我想重写以下代码以使用条件运算符:

if indexPath.row == 0 {
  cell.indentationLevel = kIndentFDA
} else {
  cell.indentationLevel = kIndentCompleted
}

但是当我写这个的时候:

indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted

我收到此编译器警告:

"Cannot assign to immutable expression of type 'Int'"

我不知道它发出了什么警告,但它可能无法弄清楚应用运算符的顺序。这应该有效。

cell.indentationLevel = indexPath.row == 0 ? kIndentFDA : kIndentCompleted

问题是你不明白三元运算符是什么。它不是为了在分支机构内执行任务;分支不是 可执行语句 。相反,分支是 求值表达式 ;因此,您在赋值的右值中使用三元运算符,分支值本身就是赋值的值。

所以,你在写这个(这是废话):

indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted

你的意思是:

cell.indentationLevel = indexPath.row == 0 ? kIndentFDA : kIndentCompleted