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