// dictionary
配列型.
配列型[T; N]は、同じ型の要素を固定長で並べたプリミティブ型です。要素数Nはコンパイル時に確定する定数で、型自体の一部になります。そのため[i32; 3]と[i32; 4]は異なる型として扱われます。
fn main() {
let scores: [i32; 3] = [80, 95, 70]; // 3科目の点数
println!("2科目目: {}", scores[1]);
println!("要素数: {}", scores.len());
}Playgroundで開くアクセス方法
方法①:添字
array[index]という添字アクセスで取得します。
添字はusize型である必要があります。
実行時に境界チェックされるため、範囲外を指定すると即座にパニックします。(添字が定数で範囲外が明らかな場合は、コンパイラが事前にエラーとして検出します)
fn main() {
let scores: [i32; 3] = [80, 95, 70];
println!("1科目目: {}", scores[0]);
}Playgroundで開く方法②:get
array.get(index)でも配列へアクセスできます。
getで取得するのはOptionなので、範囲外のインデックスが指定されたとしてもプログラムはパニックしません。
fn main() {
let scores: [i32; 3] = [80, 95, 70];
match scores.get(3) {
// 範囲外でもパニックせずOptionで受け取れる
Some(score) => println!("4科目目: {}", score),
None => println!("4科目目のデータはありません"),
}
}Playgroundで開く補足
同じ値で埋めるリピート式
[value; N]という書き方(リピート式)で、同じ値をN個並べた配列を初期化できます。要素数が2以上の場合、valueはCopyを実装した型の値であるか、const項目またはconstブロックである必要があります(The Rust Reference, Array expressions)。
fn main() {
let zeros: [i32; 5] = [0; 5]; // 0を5個並べる
println!("{:?}", zeros);
}Playgroundで開くこの辞書が使われているページ
backlinks 9