Code Fix

中級ブロック内でのシャドーイングは外側の変数に反映されない › パターン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

空欄を埋めて実行を通す

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

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

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

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

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