Swift 二进制运算符+;=不能应用于两个整数操作数
我正在创建一个简单的结构Swift 二进制运算符+;=不能应用于两个整数操作数,swift,struct,int,Swift,Struct,Int,我正在创建一个简单的结构 struct Expenses { var totalExpenses:Int = 0 func addExpense(expense: Int) { totalExpenses += expense } } 它在行的开头产生错误totalExpenses+=expense 错误消息是 二进制运算符+=不能应用于两个整数操作数 为什么我会收到错误消息以及如何解决此问题?您需要指定addExpense是一个变异函数,如下所示:
struct Expenses {
var totalExpenses:Int = 0
func addExpense(expense: Int) {
totalExpenses += expense
}
}
它在行的开头产生错误totalExpenses+=expense
错误消息是
二进制运算符+=不能应用于两个整数操作数
为什么我会收到错误消息以及如何解决此问题?您需要指定
addExpense
是一个变异
函数,如下所示:
struct Expenses {
var totalExpenses:Int = 0
mutating func addExpense(expense: Int) {
totalExpenses += expense
}
}
从文件中:
结构和枚举是值类型。默认情况下
值类型的属性不能从其实例中修改
方法
但是,如果需要修改结构的属性或
枚举,您可以选择使用
该方法的行为
有关详细信息,请参见除非使用mutating关键字,否则无法更改struct,struct默认情况下是不可变的,请尝试以下操作:
mutating func addExpense(expense: Int) { ... }
前几天我遇到了这个问题,要么在函数中使用
mutating
关键字,要么将struct
定义为class
。这可能需要更好的错误消息,其中提到需要“mutating”。嗯,编译器是全新的…@gnasher729。我错过了doc(第一次编程)中的那部分,我不知道为什么我不能添加两个int。Swift中的编译器错误是非常可怕的。他们真正的意思是“啊,有点不对劲……”。这取决于你去弄清楚是什么。更糟糕的是,有时这些信息会将你指向完全错误的方向。我觉得我又在使用80年代早期的C编译器了。谢谢。那么,在这种情况下你会用什么?类?如果使用了类,则不需要指定方法是mutating
,但这不是使用类而不是结构的原因。我建议看:谢谢。我担心的是添加“mutating”关键字在某种程度上是一种糟糕的做法。使用structs和mutating
是完全有效的,我更喜欢它而不是使用类,因为您不必担心内存泄漏之类的问题。问题是什么?@ShaifulIslam“如何解决此错误?”。现在就添加,谢谢。