中級 › ブロック内でのシャドーイングは外側の変数に反映されない › パターン4
ブロック内でのシャドーイングは外側の変数に反映されない
if文などのブロックの中でletを使って同じ名前の変数を再宣言(シャドーイング)すると、それはブロック内だけで有効な別の変数になります。
1 fn main() { 2 let mut stock = 30; 3 let arrived = 10; 4 if arrived > 0 { 5 _______________ stock + arrived; ^ 6 println!("inside: {}", stock); 7 } 8 println!("outside: {}", stock); 9 }
出力: inside: 40
outside: 30
空欄を埋めて実行を通す
ブロックの外にも反映させたい更新は、シャドーイングではなくmut変数への代入で行う必要があります。
次の問題