#はじめに
Rustの基本的な文法についてまとめてみた。第4回!
第2,3回は変数(let文)についてだったので今回は「定数」について。
###目的
Rustにおける基本的な構文の理解をする。
#Rustの基本構文シリーズ
第1回⇒Rustの基本構文(1) URL:https://qiita.com/jin237/items/b344d3a7e6dfe1056e31
第2回⇒Rustの基本構文(2) URL:https://qiita.com/jin237/items/6910b4f803a35f317213
第3回⇒Rustの基本構文(3) URL:https://qiita.com/jin237/items/59ef229a4de30cb8203b
#定数
let文では変数の定義ができたが、今回は「const文では定数の定義ができる」ということである。
文の形は、
const 名前: 型 = 定数式;
のようにかく。
例を引用してくる。(from 実践Rust入門 言語仕様から開発手法まで P.227-例5)
const SECRET_NUMBER: i32 = 25;
定数についてはそこまで説明することもない。コンパイル時に一度計算され、それを参照している場所に値が埋め込まれる。
#スタティック変数
スタティック変数の特徴
・変数の型の明示。
・グローバルスコープを含む、どのスコープにでも置くことができる。
・定義するときに使う定数式にはコンパイル時に値が確定するものしか使うことができない。
さらには、__mut__を使うことによって、ミュータブルにすることもできる。
例を引用してくる。(from 実践Rust入門 言語仕様から開発手法まで P.228-例7)
//例7
//定義に使う値はコンパイル時に値が確定するものでないといけない
static mut v: Option<Vec<i32>>=None;
//ミュータブルなスタティック変数を扱うときは代入も参照もunsafeブロックの中で行わないといけない
unsafe{
//代入するときはコンパイル時に値が確定するものでなくてもよい。
v = Some(vec![1, 2, 3]);
println!("{:?}", v);
}
#さいごに
定数、変数以外にもスタティック変数がある。これは使い道の幅が増えるし、処理も早くなるのもわかる。
基本構文シリーズでは次に計算系(演算子など)や、分岐(ifなど)、繰り返し(loopなど)についても書いていって大まかなコード内容の整理を書いていく。