Swift语法疑问:解析activeIndex = activeIndex == cellIndex ? nil : cellIndex语句
理解Swift中这行三元运算符代码的含义
先来看你这段代码的上下文:这是CustomCellDelegate的实现方法,用来处理表格单元格的状态切换逻辑。其中你疑惑的这行三元运算符代码,其实就是切换选中状态的核心逻辑,我把它拆解开给你讲明白:
activeIndex = activeIndex == cellIndex ? nil : cellIndex
等价的if-else写法
如果你觉得三元运算符看着绕,它完全可以转换成更直观的if-else语句,效果一模一样:
if activeIndex == cellIndex { // 如果当前选中的索引就是点击的这个cell的索引 activeIndex = nil // 取消选中,把选中索引置空 } else { // 如果点击的是未选中的cell activeIndex = cellIndex // 将这个cell的索引设为当前选中的索引 }
逐部分解释
- 首先判断条件:
activeIndex == cellIndex—— 检查当前记录的选中索引,是不是和你刚点击的这个cell的索引一致 - 条件为
true时(点击了已经选中的cell):执行?后面的nil,也就是把activeIndex设为空,相当于取消这个cell的选中状态 - 条件为
false时(点击了未被选中的cell):执行:后面的cellIndex,把当前点击的cell索引设为新的选中索引,也就是选中这个cell
配合后面的tableView.reloadData(),表格会重新刷新,根据activeIndex的值来更新各个cell的选中状态显示,实现“点击选中,再点击取消”的交互效果。
内容的提问来源于stack exchange,提问作者Dimitar Vuksanov
相关产品推荐
相关产品推荐

