我正在尝试通过挑战代码出现来学习Rust,但我在处理数组时遇到了困难。我正在尝试创建具有特定值[1,1,1,4,99,5,6,0,99]和的数组t:
1)取数组的第一个值(t [0]),如果t [0]是1,我在做加法,如果t [0]是2,我在做乘法。对于这些值,由于第一个数字为1,所以我要做加法。
2)然后,我应该将t [1] + t [2](在这种情况下为2)加进去,并将其存储在数组中的值存储在t [3]中,所以t [t [ 3]]或t [4]。所以t [4]现在应该读为2,而不是99。(对不起,我知道这听起来很令人困惑。)
到目前为止,我只是想使这个附加部分起作用,这是我的代码
fn main() {
let mut t: [u64; 9] = [1,1,1,4,99,5,6,0,99];
//ignore all of these let a: u64 = 0;
//let b: u64 = 1;
//let c: u64 = 2;
//let d: u64 = 3;
decide(&t[0 .. 3]);
println!("Position 0 is {}", t[0]);
}
fn decide(v: &[u64]){
if v[0] == 1 {
addition(&v[1 .. 3]);
} else if v[0] == 2 {
multiplication();
} else if v[0] == 99 {
println!("Problem succesfully completed!");
println!("Position 0 is {}", t[0]);
} else {
println!("Something went wrong!");
}
}
fn addition(a: &[u64]){
a[1] + a[2] = a[a[3]];
}
fn multiplication(){
}
答案 0 :(得分:0)
我将不提供完整答案,并将提供一些提示。
第二,如果要更改数组中的值,则需要执行以下操作:
a [3] = a [1] + a [2]; //代替a [1] + a [2] = a [3];
// a [1] + a [2] = a [3];该语句试图为临时变量
如何在索引时确保不超出数组范围(要传递完整的数组或其他任何选项)
最后,有一个错字。我想您打算说的是v[0]
而不是t[0]