中級 › ブロック内でのシャドーイングは外側の変数に反映されない › パターン3
ブロック内でのシャドーイングは外側の変数に反映されない
if文などのブロックの中でletを使って同じ名前の変数を再宣言(シャドーイング)すると、それはブロック内だけで有効な別の変数になります。
1 fn main() { 2 let mut level = 1; 3 let gained = 2; 4 if gained > 0 { 5 _______________ level + gained; ^ 6 println!("inside: {}", level); 7 } 8 println!("outside: {}", level); 9 }
出力: inside: 3
outside: 1
空欄を埋めて実行を通す
シャドーイングと再代入は見た目が似ていますが、変数のスコープに与える影響が全く違います。
次の問題