如何在 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
我想重写以下代码以使用条件运算符:
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