首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二进制运算符'+=‘不能应用于类型的操作数。

二进制运算符'+=‘不能应用于类型的操作数。
EN

Stack Overflow用户
提问于 2018-09-06 12:00:58
回答 3查看 1.3K关注 0票数 1

我在练习一些代码,一些问题。

这是密码

代码语言:javascript
复制
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 =水果(名称:"Apple",容量: 1),水果(名称:"Banana",容量: 2)工作。

所以我想我可以使用'+=‘运算符来添加另一个元素。

但是在最后一行,macFood.fruits +=果树(名字:“葡萄”,容量: 3)崩溃了。

错误消息是

‘二进制运算符'+=’不能应用于‘+=’类型的操作数?和‘macFood.fruits’+=水果(名称:“葡萄”,容量:3)

‘期望一个类型的参数列表'(inout,S)’macFood.fruits +=果树(名称:“葡萄”,容量: 3)'

问题

  1. 坠机的原因是什么?
  2. macFood.fruits Array吗? 2-1。如果是,我可以在Array中添加另一个元素吗? 2-2。如果没有,为什么这个数组不是? 2-1.如果是和是,我如何在数组中添加另一个元素? 2-1-2。如果是但不是,为什么我不能在Array中添加元素?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-06 12:08:25

  1. 原因是您试图对两个不同类型的对象使用+=,一个是水果数组,另一个是可选对象(‘Fruits?’意味着它是可选的)。
  2. 是的,它是一个数组。 2.1是 2.1.1您可以使用yourArray.append(object)添加另一个元素
票数 1
EN

Stack Overflow用户

发布于 2018-09-06 12:03:31

抱歉我没注意到。

您的问题是“macFood.fruits”是可选的,您不能在可选类型中添加非可选类型。

或者设置非可选的水果,比如

代码语言:javascript
复制
var fruits:[Fruits] = []

或者使用追加方法,例如:

代码语言:javascript
复制
    if macFood.fruits?.append(Fruits(name: "Grape", capacity: 3)) == nil {
    myArray = [Fruits(name: "Grape", capacity: 3)] 
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-06 12:31:43

您需要像这样声明Food

代码语言:javascript
复制
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
    }
}

使用

代码语言:javascript
复制
let macFood: Food = Food(name: "macFood")
macFood.fruits = [Fruits(name: "Apple", capacity: 1), Fruits(name: "Banana", capacity: 2)]
macFood.fruits += [Fruits(name: "Grape", capacity: 3)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52203647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档