swift - 二元运算符 '+=' 不能应用于类型的操作数。
问题描述
我正在练习一些代码,提出了一些问题。
这是代码
class Food {
let name:String
var fruits:[Fruits]?
init(name:String) {
self.name = name
}
}
class Fruits {
let name:String
let capacity:Int
init(name:String, capacity:Int) {
self.name = name
self.capacity = capacity
}
}
var macFood: Food = Food(name: "macFood")
macFood.fruits
macFood.fruits = [Fruits(name: "Apple", capacity: 1), Fruits(name: "Banana", capacity: 2)]
macFood
macFood.fruits
macFood.fruits += [Fruits(name: "Grape", capacity: 3)]
所有代码都很好,打印得很好,但最后一行带来了问题。
我以为 macFood.fruits 是数组。
因为,macFood.fruits = [Fruits(name: "Apple", capacity: 1), Fruits(name: "Banana", capacity: 2)]有效。
所以我想我可以通过使用'+='运算符来添加另一个元素。
但它在最后一行崩溃了,macFood.fruits += [Fruits(name: "Grape", capacity: 3)]
错误消息是
'二元运算符'+='不能应用于'[Fruits]?'类型的操作数 和'[Fruits]' macFood.fruits += [Fruits(name: "Grape", capacity: 3)]'
'期望'(inout R, S)' 类型的参数列表 macFood.fruits += [Fruits(name: "Grape", capacity: 3)]'
问题
坠机的原因是什么?
是 macFood.fruits数组吗?
2-1。如果是,我可以在 Array 中添加其他元素吗?
2-2。如果不是,为什么不是这个数组?
2-1-1。如果是和是,我怎样才能在数组中添加其他元素?
2-1-2。如果是但不是,为什么我不能在 Array 中添加元素?
谢谢!
解决方案
原因是您试图对两个不同类型的对象使用 +=,一个是 Fruits 数组,另一个是 Optional([
Fruits]?
表示它是可选的)。是的,它是一个数组。
2.1 是
2.1.1 您可以使用添加其他元素
yourArray.append(object)
推荐阅读
- data-structures - 粉碎链表节点
- gitlab - 全文搜索所有 git 存储库 (gitlab)
- javascript - 如何在组件函数内动态生成用户定义的类对象
- php - 使用 Laravel 创建论坛但遇到 Angular 问题
- c# - 将变量传递给 FindsBy selenium
- python - 如何消除 sklearn 上决策树的随机性?
- perl - 如何在 Perl 中打印二维数组中的行信息?
- javascript - 添加选项以使用 jQuery 进行选择
- python - 如何将数据框中的列与 Pandas 中第二个数据框中具有相同名称/位置的列中的值进行比较?
- python - 两步两步验证