Rust で変数を作成して使用する

完了

開発者は、データを操作するコンピューター プログラムを記述します。 データの収集、分析、保存、処理、共有、報告が行われます。 "変数" を使用して、コード内で後で参照できる名前付き参照にデータを格納します。

変数

Rust では、変数はキーワード let を使用して宣言されます。 各変数には一意の名前が付いています。 変数が宣言されている場合は、値にバインドできます。また、後でプログラム内で値をバインドすることもできます。 次のコードでは、a_number という名前の変数を宣言しています。

let a_number;

a_number 変数はまだ値にバインドされていません。 このステートメントを変更して、値を変数にバインドできます。

let a_number = 10;

Note

キーワード: 他のプログラミング言語と同様に、fnlet などの特定の "キーワード" は、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 つ選択して、[回答を確認] を選択します。

1.

変数の宣言と値のバインドの両方が行われている Rust ステートメントはどれですか?

2.

変数の値を変更可能にするために使用される Rust キーワードはどれですか?