シャドーイング パート2
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 48/75。
Rustで変数をシャドーイングすると、新しい変数は元の変数から完全に独立しており、それ自身の可変性の宣言が必要になります。シャドーイングは元の変数の可変性を引き継ぎません。
let mut mut_val = 7;
// 元の変数はミュータブル(可変)です
{
let mut_val = 8;
// これは外側の mut_val をシャドーイングする新しい変数です
mut_val = 50;
// エラーが発生しました。なぜなら
// mut_val がミュータブルではないからです
}
// ここでは問題ありません
// このスコープでは mut_val は凍結されていません
mut_val = 3;修正するには、内部スコープに mut を追加します:
{
let mut mut_val = 8;
mut_val = 50;
}チャレンジ
初心者与えられたコードを修正して、エラーなしで実行できるようにしてください。
チートシート
Rustで変数をシャドーイングする場合、新しい変数は完全に独立しており、独自のミュータビリティ(可変性)宣言が必要です。シャドーイングは元の変数からミュータビリティを継承しません。
let mut mut_val = 7;
// 元の変数は可変です
{
let mut_val = 8;
// これは外側のmut_valをシャドーイングしますが、不変です
mut_val = 50;
// エラー: このスコープではmut_valは可変ではありません
}これを修正するには、シャドーイングする変数にmutを追加します:
{
let mut mut_val = 8;
mut_val = 50; // これで動作します
}自分で試してみよう
fn main() {
// このコードを修正して動作するようにしてください
let number = 42;
{
let number = number;
println!("number is {}", number);
number = 100; // これはエラーになります
println!("number is {}", number);
}
println!("number is {}", number);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。