#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?