我想重写下面的代码以使用条件运算符:
if indexPath.row == 0 {
cell.indentationLevel = kIndentFDA
} else {
cell.indentationLevel = kIndentCompleted
}
但是当我写这篇文章时:
indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted
我收到此编译器警告:
“无法分配给'Int'类型的不可变表达式”
答案 0 :(得分:2)
问题在于您不了解三元运算符 的含义。它不是在分支机构内执行任务;分支不是可执行语句。相反,分支是评估表达式;因此,您在赋值的右值使用三元运算符,分支值本身就是赋值。
所以,你正在写这个(这是无稽之谈):
indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted
你的意思是:
cell.indentationLevel = indexPath.row == 0 ? kIndentFDA : kIndentCompleted
答案 1 :(得分:1)
我不知道警告它是什么,但它可能无法弄清楚应用运算符的顺序。这应该有用。
cell.indentationLevel = indexPath.row == 0? kIndentFDA:kIndentCompleted