前回はこんなコードを書きました。
main.rs
fn main() {
// idは配列の要素数を表す
let id = 2;
let pos_ary = [(0, 0), (0, 0)];
for i in 0..id {
println!("{}: {:?}", i, pos_ary[i])
}
}
このコードには問題があります。
それは、idが配列の要素数を超えた値のときに実行時エラーになってしまうこと。
つぎに、配列の要素数が固定で、要素を増やせないこと。
この問題に対処しようと思います。
そこで、create_entityという関数を書いてみました。
main.rs
fn main() {
// idは配列の要素数を表す
let mut id = 0;
// 配列をやめて、ベクタで宣言する
let mut pos_ary: Vec<(i32, i32)> = vec![];
// 効果を確かめるために、10回 create_entity を呼び出す
for i in 0..10 {
create_entity(&mut id, &mut pos_ary);
}
for i in 0..id {
println!("{}: {:?}", i, pos_ary[i])
}
}
// idを増やして、配列に要素を追加する
fn create_entity(id: &mut usize, ary: &mut Vec<(i32, i32)>){
*id += 1;
ary.push((0, 0));
}
このようにすることで、idと配列の要素数を一致させることができました。
ただ、まだ問題があります。
pos_aryの要素がすべて(0, 0)になってしまうこと。
次回は、これを解決したいと思います。