首页 > 解决方案 > 二元运算符 '+=' 不能应用于类型的操作数。

问题描述

我正在练习一些代码,提出了一些问题。

这是代码

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)]'

问题

  1. 坠机的原因是什么?

  2. 是 macFood.fruits数组吗?

    2-1。如果是,我可以在 Array 中添加其他元素吗?

    2-2。如果不是,为什么不是这个数组?

    2-1-1。如果是和是,我怎样才能在数组中添加其他元素?

    2-1-2。如果是但不是,为什么我不能在 Array 中添加元素?

谢谢!

标签: swiftxcode

解决方案


  1. 原因是您试图对两个不同类型的对象使用 +=,一个是 Fruits 数组,另一个是 Optional([Fruits]?表示它是可选的)。

  2. 是的,它是一个数组。

    2.1 是

    2.1.1 您可以使用添加其他元素yourArray.append(object)


推荐阅读