Code Fix

中級ブロック内でのシャドーイングは外側の変数に反映されない › パターン2

ブロック内でのシャドーイングは外側の変数に反映されない

if文などのブロックの中でletを使って同じ名前の変数を再宣言(シャドーイング)すると、それはブロック内だけで有効な別の変数になります。

 1  fn main() {
 2      let mut balance = 500;
 3      let deposit = 100;
 4      if deposit > 0 {
 5          _________________ balance + deposit;
                    ^
 6          println!("inside: {}", balance);
 7      }
 8      println!("outside: {}", balance);
 9  }
出力: inside: 600 outside: 500

空欄を埋めて実行を通す

広告
広告スロット(未設定)

ブロック内でのシャドーイングは外側の変数に反映されない

ブロックを抜けると、外側の変数は変更されないまま残ります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)