Rust 基礎からマスターまで — 第2回
変数、型、関数、パターンマッチングの習得
本ブログ作成文は、講義を目指して製作されました。 また、作成された文章の情報も間違っている可能性がありますので、ご注意ください。
Rustは変数の型と値が有効な範囲をコンパイル段階で確認します。 基本文法から式とパターンマッチングを一緒に理解すれば、以降の所有権コードも読みやすくなる。
変数と型
let level: u32 = 10;
let speed = 4.5_f32;
let alive = true;
let mut health = 100;
health -= 20;
変数はデフォルトで変更できず、mutを付けなければ値を変更できません。 不変がデフォルトの場合、どのコードが状態を変更するのかを見つけるのは簡単です。
整数タイプはサイズと符号が決まっている。 他の数値型に置き換えるときは、asや変換関数を使って意図を明らかにしなければならない。
式
let state = if health <= 0 {
"Dead"
} else if health < 30 {
"Danger"
} else {
"Normal"
};
Rustのifは、値を返す式として使用できます。 各分岐が返すタイプは互いに等しくなければなりません。
セミコロンがない場合、ブロックの最後の式が戻り値になります。 セミコロンを付けると値のないユニットタイプになる。
matchと繰り返し
let reward = match rank {
'S' => 1000,
'A' => 500,
_ => 100,
};
let mut total = 0;
for damage in [10, 20, 15] {
total += damage;
}
matchは、可能な場合を欠かさないようにチェックします。 _は、前に処理していない残りのパターンです。
機能
fn calculate_damage(attack: i32, defense: i32) -> i32 {
(attack - defense).max(1)
}
パラメータと戻り型は明示され、最後の式が結果になります。 関数は単にコードを減らすツールではなく、入力、出力、責任の境界を作るツールです。