シャドーイングとは
- Rustでは、以前定義した変数と同じ名前の変数を新しく宣言できます。
- また新しい変数は、前の変数を覆い隠すような動作になります。
例
fn main() {
let x = 1;
let x = x + 2;
let x = x * 3;
println!("The value of x is: {}", x);
}
- さてこれを実行するとどうなるでしょうか・・?
実行結果
❯ cargo run
Compiling variables v0.1.0 (/Users/yoshitaka.koitabashi/Desktop/variables)
Finished dev [unoptimized + debuginfo] target(s) in 0.24s
Running `target/debug/variables`
The value of x is: 9
解説
- 結果を見ると計算結果は、9を出力しています。
- 動きとしては、まずxを1という値に束縛します。
- 2番目のletでは、xを覆い隠し、元の値に2を加えることになるので、xの値は3になります。
- 3番目のletでも、xを覆い隠し、2番目のxに3をかけるので、出力されるxの値は9になります。
メリット
- このシャドーイングのおかげで、 異なる名前を思いつく必要がなくなるわけです。命名するのって大変なので非常に僕としては感謝ですね!
おまけ
-
そういえば最近知ったのですが、Rustプログラマのことを「Rustacean」と呼ぶそうで、これはcrustaceanからきてるそう。。
-
ちなみに、Rustコミュニティの非公式マスコットがこれなので、なるほどとなりました笑