Не удается изменить свойство struct, поскольку «Вызов функции возвращает неизменяемое значение»

#swift

#swift

Вопрос:

У меня есть структура под названием «enemy» с двумя свойствами:

 struct enemy {
var hp = 0
var dam = 0
}
  

У меня есть функция, которая бросает кости (я не знаю самого аккуратного способа сделать это, но я эмулирую реальный процесс), и я вызываю эту функцию в другой функции, чтобы определить вражеские значения во время столкновения с врагом.

Моя функция diceRoll (я знаю, что это работает, поскольку я использую ее в другом месте)

 func diceRoll(roll: Int) {
outcome = roll
}
  

И, наконец, рассматриваемый бит, который не работает:

 func decideEnemyStats() {
diceRoll(roll: Int(arc4random_uniform(6)   1));
enemy().hp = outcome
}
  

Я получаю эту ошибку:

не удается присвоить свойству: вызов функции возвращает неизменяемое значение

почему?

Комментарии:

1. В сообщении об ошибке указано «почему». Прочитайте это еще раз и доверяйте тому, что там написано. В написанном виде код не имеет смысла (и, к счастью, это может быть перехвачено как часть системы типов).

2. enemy() создает новый (временный) enemy объект. Вот почему вы должны следовать соглашению о написании имен типов с заглавной буквы: Enemy 🙂

3. @jtbandes как поможет использование заглавной буквы в имени моего типа?

4. Это затрудняет путаницу с именами переменных, которые обычно пишутся в нижнем регистре.

5. @jtbandes значит, нет способа передать значение enemy().hp?