Code Fix

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

空欄を埋めて実行を通す

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

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

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

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

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