gpt4 book ai didi

rust - 如何设置现有结构的值?

转载 作者:行者123 更新时间:2023-11-29 08:25:24 26 4
gpt4 key购买 nike

考虑以下几点:

use rand::{thread_rng, Rng};

struct Character {
name: String,
hp: i32,
level: i32,
xp: i32,
gold: i32
}

impl Character {
fn new(name: String) -> Character {
let mut rng = thread_rng();

let hp: i32 = rng.gen_range(12, 75);
let gold: i32 = rng.gen_range(10, 50);

Character { name: name, hp: hp, level: 1, xp: 0, gold: gold }
}

fn set_hp(&self, hp: &i32) {
&self.hp = hp;
}

fn get_hp(&self) -> i32 {
self.hp
}
}

这会产生以下错误:

error[E0070]: invalid left-hand side expression
--> src/game/character/Character.rs:22:9
|
22 | &self.hp = hp;
| ^^^^^^^^^^^^^ left-hand of expression not valid

为什么我不能将 Character.hp 设置为传入的值?这是什么左 watch 情爵士乐?我在文档中找不到这方面的任何信息。

最佳答案

语法 &foo = bar 没有意义。如果有效,则意味着:

  1. 引用foo
  2. 将引用(指针)替换为 bar

你想要的是

fn set_hp(&mut self, hp: &i32) {
self.hp = *hp;
}

取消引用 传入的参数并将其存储在self.hp 中。请注意,self 参数必须是可变的才能更改值。

What's this left hand expression jazz?

通常缩写为LHS,它是赋值操作的左侧。有些东西可以有效分配给。例如,5 = 6 也是无效的 LHS。

关于rust - 如何设置现有结构的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40074725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com