Swift Can';t修改结构属性,因为";函数调用返回不可变值";

Swift Can';t修改结构属性,因为";函数调用返回不可变值";,swift,Swift,我有一个名为“敌人”的结构,它有两个属性: struct enemy { var hp = 0 var dam = 0 } 我有一个掷骰子的函数(我不知道最简单的方法,但我正在模拟现实生活中的过程),我在另一个函数中调用该函数,以在遇到敌人时确定敌人的价值 我的掷骰子功能(我知道这是可行的,因为我在其他地方使用它) 最后一个问题是不起作用的部分: func decideEnemyStats() { diceRoll(roll: Int(arc4random_uniform(6) + 1));

我有一个名为“敌人”的结构,它有两个属性:

struct enemy {
var hp = 0
var dam = 0
}
我有一个掷骰子的函数(我不知道最简单的方法,但我正在模拟现实生活中的过程),我在另一个函数中调用该函数,以在遇到敌人时确定敌人的价值

我的掷骰子功能(我知道这是可行的,因为我在其他地方使用它)

最后一个问题是不起作用的部分:

func decideEnemyStats() {
diceRoll(roll: Int(arc4random_uniform(6) + 1));
enemy().hp = outcome
}
我得到这个错误:

无法分配给属性:函数调用返回不可变值


为什么?

错误消息显示“为什么”。再读一遍,相信上面说的话。编写代码时没有任何意义(谢天谢地,这可以作为typesystem的一部分捕获)。
敌军()
创建一个新的(临时的)
敌军
对象。这就是为什么您应该遵循类型名大写的惯例:
敌方
:)@jtbandes将我的类型名大写有什么帮助?这会使它更难与通常使用小写的变量名混淆。@jtbandes所以无法将值传递给敌方().hp?错误消息说“为什么”。再读一遍,相信上面说的话。编写代码时没有任何意义(谢天谢地,这可以作为typesystem的一部分捕获)。
敌军()
创建一个新的(临时的)
敌军
对象。这就是为什么您应该遵循将类型名称大写的惯例:
敌方
:)@jtbandes将我的类型名称大写会有什么帮助?它会使您更难与通常使用小写的变量名称混淆。@jtbandes所以无法将值传递给敌方().hp?
func decideEnemyStats() {
diceRoll(roll: Int(arc4random_uniform(6) + 1));
enemy().hp = outcome
}