Rust で変数を作成して使用する
開発者は、データを操作するコンピューター プログラムを記述します。 データの収集、分析、保存、処理、共有、報告が行われます。 "変数" を使用して、コード内で後で参照できる名前付き参照にデータを格納します。
変数
Rust では、変数はキーワード let
を使用して宣言されます。 各変数には一意の名前が付いています。 変数が宣言されている場合は、値にバインドできます。また、後でプログラム内で値をバインドすることもできます。 次のコードでは、a_number
という名前の変数を宣言しています。
let a_number;
a_number
変数はまだ値にバインドされていません。 このステートメントを変更して、値を変数にバインドできます。
let a_number = 10;
Note
キーワード: 他のプログラミング言語と同様に、fn
や let
などの特定の "キーワード" は、Rust のみが使用するために予約されています。 キーワードを関数または変数の名前として使用することはできません。
別の例を見てみましょう。 次のコードでは、2 つの変数が宣言されています。 最初の変数は宣言されていますが、値にバインドされていません。 2 番目の変数は宣言されており、値にバインドされています。 プログラムの後の部分で、最初の変数が値にバインドされています。 コードでは、変数の値を表示する println!
マクロが呼び出されます。
// Declare a variable
let a_number;
// Declare a second variable and bind the value
let a_word = "Ten";
// Bind a value to the first variable
a_number = 10;
println!("The number is {}.", a_number);
println!("The word is {}.", a_word);
この例では、次の出力が出力されます。
The number is 10.
The word is Ten.
println!
マクロを呼び出して、a_number
変数の値をバインド前に表示しようとすると、コンパイラからエラーが返されます。
このエラー メッセージは自分で、Rust Playground で確認できます。 [実行] ボタンを選択して、コードを実行します。
不変と変更可能
Rust では、変数バインドは既定で変更できません。 変数が不変の場合、値が名前にバインドされた後に、その値を変更することはできません。
たとえば、前の例の a_number
変数の値を変更しようとした場合、コンパイラからエラー メッセージを受け取ります。
// Change the value of an immutable variable
a_number = 15;
Rust プレイグラウンドでこの変更を自分で試してみて、エラー メッセージを確認できます。
値を変更するには、まず mut
キーワードを使用して、変数バインドを変更可能にする必要があります。
// The `mut` keyword lets the variable be changed
let mut a_number = 10;
println!("The number is {}.", a_number);
// Change the value of an immutable variable
a_number = 15;
println!("Now the number is {}.", a_number);
この例では、次の出力が出力されます。
The number is 10.
Now the number is 15.
このコードは、変数 a_number
が変更可能になったため、エラーなくコンパイルされます。
変数のシャドウ処理
既存の変数の名前を使用する新しい変数を宣言できます。 新しい宣言によって新しいバインドが作成されます。 Rust では、新しい変数によって、前の変数がシャドウされるため、この操作は "シャドウ処理" と呼ばれます。 古い変数は引き続き存在していますが、このスコープでは参照できなくなります。
シャドウ処理を使用したコードの例を次に示します。 shadow_num
という名前の変数を宣言します。 変数は変更可能として定義しません。各 let
操作では、前の変数のバインドをシャドウ処理するときに shadow_num
という新しい変数が作成されるためです。
// Declare first variable binding with name "shadow_num"
let shadow_num = 5;
// Declare second variable binding, shadows existing variable "shadow_num"
let shadow_num = shadow_num + 5;
// Declare third variable binding, shadows second binding of variable "shadow_num"
let shadow_num = shadow_num * 2;
println!("The number is {}.", shadow_num);
出力を推測できますか? Rust Playground にアクセスしてこの例を実行してください。
自分の知識をチェックする
次の質問に答えて、学習した内容を確認してください。 質問ごとに回答を 1 つ選択して、[回答を確認] を選択します。