二元运算符+ =不能应用于两个Int操作数

时间:2015-05-14 15:20:05

标签: swift struct int

我正在创建一个简单的结构。

struct Expenses {

    var totalExpenses:Int = 0

    func addExpense(expense: Int) {
        totalExpenses += expense
    }
}

它在行totalExpenses += expense的开头产生错误 错误消息是

  

binary operator + =不能应用于两个Int操作数。

为什么我收到错误消息以及如何解决此问题?

3 个答案:

答案 0 :(得分:1)

您需要指定addExpensemutating函数,如下所示:

struct Expenses {
    var totalExpenses:Int = 0

    mutating func addExpense(expense: Int) {
        totalExpenses += expense
    }
}

来自文档:

  

结构和枚举是值类型。默认情况下   无法在其实例中修改值类型的属性   方法

     

但是,如果您需要修改结构的属性或   在特定方法中枚举,您可以选择进行变异   该方法的行为。

有关详细信息,请参阅 The Swift Programming Language: Methods

答案 1 :(得分:1)

除非使用mutating关键字,否则不能更改struct,默认情况下struct不可变,请尝试:

mutating func addExpense(expense: Int) { ... }

答案 2 :(得分:1)

我前几天遇到过这个问题,要么在您的函数上使用mutating关键字,要么将struct定义为class