arrays - 为什么 Xcode 显示错误:变异运算符的左侧不可变:条件运算符的结果'?:' 永远不可变?
问题描述
我正在重温 Apple 课程书籍并尝试以不同的方式完成练习。问题很简单:给了我一个数组,我必须循环遍历它来计算选票。
enum ClassTripDestination {
case beach, chocolateFactory
}
let tripDestinationVotes: [ClassTripDestination] = [.beach, .chocolateFactory, .beach, .beach, .chocolateFactory]
实际数组有 200 个值,我在这里缩短了它,以免占用太多空间。
解决方案很简单:
var beach = Int()
var factory = Int()
for destination in tripDestinationVotes {
if destination == .beach {
beach += 1
} else {factory += 1}
}
但我决定练习三元运算符并想出了这个:
for destination in tripDestinationVotes {
destination == .beach ? beach += 1 : factory += 1
}
好吧,正如我的主题所述,Xcode 对这段代码不满意。
变异运算符的左侧不可变:条件运算符的结果'?:' 永远不可变
但困扰我的是,就在这个练习之前,我完成了另一个——非常相似。我不得不搜索一系列鸡肉。
var chickenOfInterestCount = 0
for chicken in chickens {
chicken.temper == .hilarious ? chickenOfInterestCount += 1 : nil
}
chickenOfInterestCount
这段代码的执行没有任何问题。
有人可以向我解释一下,为什么计算数组中的选票有问题?
解决方案
解决方案很简单,只需在真假部分代码周围添加圆括号即可。
for destination in tripDestinationVotes {
(destination == .beach) ? (beach += 1) : (factory += 1)
}
我认为对于您的代码,Xcode 只是因为具有多个符号(例如等于或加号)而感到困惑。但是对于倒数第二个情况,很明显错误的部分是 nil 并且正确地识别了真实的部分
推荐阅读
- firebase - 如何在 javascript 中使用 webhook?
- groovy - 条件条件未按预期工作
- c++ - mysqlcppconn 驱动程序抛出内存泄漏
- mysql - Opencart数据库中的sql查询有问题
- javascript - 如何解决 __WEBPACK_IMPORTED_MODULE_1__.default 未定义
- flutter - 在 webview 中颤动水平滑动手势
- node.js - 如何从位于 node_module 的库中获取项目的 src 路径
- c# - 在从构造函数调用的方法中初始化的不可为空的字段
- bin-packing - 多项式时间精确离线装箱问题
- postgresql - [GraphQL 错误]:消息:在表“XXX”上插入或更新违反外键约束“XXX”,位置:[object Object],路径:XXX