我正在创建一个简单的结构。
struct Expenses {
var totalExpenses:Int = 0
func addExpense(expense: Int) {
totalExpenses += expense
}
}
它在行totalExpenses += expense
的开头产生错误
错误消息是
binary operator + =不能应用于两个Int操作数。
为什么我收到错误消息以及如何解决此问题?
答案 0 :(得分:1)
您需要指定addExpense
是mutating
函数,如下所示:
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
。