中級 › ブロック内でのシャドーイングは外側の変数に反映されない › パターン5
ブロック内でのシャドーイングは外側の変数に反映されない
if文などのブロックの中でletを使って同じ名前の変数を再宣言(シャドーイング)すると、それはブロック内だけで有効な別の変数になります。
1 fn main() { 2 let mut hp = 50; 3 let heal = 15; 4 if heal > 0 { 5 ____________ hp + heal; ^ 6 println!("inside: {}", hp); 7 } 8 println!("outside: {}", hp); 9 }
出力: inside: 65
outside: 50
空欄を埋めて実行を通す
letを付けた瞬間に、それはまったく別の変数として扱われ、外側の変数とは無関係になります。
次の問題