🌊

Rustにおける同じ変数名での宣言(シャドーイング)とは?

2021/03/19に公開

シャドーイングとは

  • 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コミュニティの非公式マスコットがこれなので、なるほどとなりました笑

1.png

Discussion