まえがき
この記事はRUSTチュートリアルをZerobillbank社内メンバー(有志)で勉強がてら、可能な限りわかりやすく内容を書き出す企画の一部です。
なお、初学者のため(略)という免責を打ちつつ間違いなどあればコメントで教えていただけますと一同嬉しく思います!
本項は変数と可変性について記載します。
https://doc.rust-jp.rs/book/second-edition/ch03-01-variables-and-mutability.html
変数と可変性
Rustの変数を宣言は標準で不変になります。
fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6; // ここでコンパイルエラー
println!("The value of x is: {}", x);
}
上記のように一度値が名前に束縛されたら、その値を変えることはできません。
この仕組みにより値が予期せぬタイミングで更新されることを防ぎ、バグ発生のリスクが減りますね!
値を後から変更したい場合
とはいえ、変数を可変にすることは時に必要になるもの、、、
そういう場合は以下の通りmutをつけて宣言します!!
fn main() {
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
定数
変数は標準で不変と記載しました。
Rustでは変数とは別で「定数」もあります。
const MAX_POINTS: u32 = 100_000;
定数と変数には以下のような違いがあるようです。
- 値の型は必ず注釈しなければならない
- 定数はグローバルスコープも含めどんなスコープでも定義できる
- 関数呼び出し結果や、実行時に評価される値にはセットできない
シャドーイング
前に定義した変数と同じ名前の変数を新しく宣言することができます。
新しい変数が前の変数を覆い隠すようなイメージになるようです。
変数名がそれほど重要でないコードを書くときなどに変数名をいちいち考えなくてすみそうなので便利ですね!
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
}
さいごに
ZEROBILLBANKでは一緒に働く仲間を募集中です。
ZEROBILLBANK JAPAN Inc.