第3章では、Rustプログラミングにおける基本的な構文について解説していきます。この章を通して、Rustの基本的な要素と文法に慣れ、後の章で扱う高度なトピックにスムーズに進めるようにしていきましょう。Rustの基本文法はシンプルでわかりやすい構造ですが、メモリの安全性や所有権の概念が基礎にあるため、最初から効率的で安定したコードを書けるようになります。
Rustでは、変数と定数を使ってデータを扱いますが、他の多くの言語とは異なり、変数はデフォルトで不変(immutable)です。Rustでは、安全な並行処理のため、変数を明示的に変更可能にしなければならないため、コードが予期せず変更されるリスクを防ぎやすくなっています。
変数は let
キーワードで定義します。例えば、整数値の変数を作る場合、次のように書きます。
fn main() {
let x = 5;
println!("The value of x is: {}", x);
}
上記のコードでは、変数 x
を定義し、その値を5に設定しています。この変数はデフォルトで不変なので、 x
に再代入しようとするとコンパイルエラーが発生します。Rustでは、デフォルトの不変性がコードの安全性と予測可能性を保つのに役立ちます。
変更可能な変数を作成するには、 mut
キーワードを使用します。例えば、次のように mut
を使って変数 y
を変更可能にします。
fn main() {
let mut y = 10;
println!("The initial value of y is: {}", y);
y = 20;
println!("The new value of y is: {}", y);
}
この場合、 y
に新しい値を代入してもエラーは発生しません。mut
を用いることで、変数が予期しない変更を受ける可能性がある場合でも、その意図を明確に示すことができます。
定数は const
キーワードで定義します。定数は実行時に変更できず、定数式でしか初期化できません。また、変数とは異なりスコープ内で再定義することもできません。
const MAX_POINTS: u32 = 100_000;
ここで、 MAX_POINTS
は型 u32
(32ビットの符号なし整数)で定義されており、大文字とアンダースコアで命名されているのが特徴です。Rustでは、定数名は通常すべて大文字で書き、アンダースコアで区切ります。定数はグローバルに定義することができ、プログラム全体で使用することが可能です。
Rustは静的型付け言語であり、すべての変数の型はコンパイル時に決まります。変数の型はRustのコンパイラが自動的に推論しますが、明示的に型を指定することも可能です。
Rustの基本的な型は以下の通りです。
i8
, i16
, i32
, i64
, i128
, isize
): 符号付きの整数。ビット数が異なる様々なサイズがあり、用途に応じて選べます。u8
, u16
, u32
, u64
, u128
, usize
): 符号がなく、非負の整数のみを扱います。f32
, f64
): 小数を扱うための型で、f32
は単精度、f64
は倍精度です。char
): Unicode対応の1文字を表す型で、4バイトのメモリを使用します。bool
): true
または false
の2つの値を持つ論理型です。型を明示する場合は、変数の定義に :
を使って型を指定します。例えば、整数型の変数 z
を i32
として宣言する場合は次のようになります。
fn main() {
let z: i32 = 42;
println!("The value of z is: {}", z);
}
Rustは型の明示的な変換を必要とします。異なる型間で値を変換するには、 as
キーワードを使います。次に、整数型 i32
を f64
に変換する例を示します。
fn main() {
let int_value: i32 = 10;
let float_value: f64 = int_value as f64;
println!("The float value is: {}", float_value);
}
Rustでは関数を定義する際に fn
キーワードを使用します。関数には入力(引数)と出力(戻り値)があり、型はすべて明示的に指定する必要があります。例えば、次のコードは、2つの整数を受け取り、その合計を返す関数 add
を定義しています。
fn add(x: i32, y: i32) -> i32 {
x + y
}
fn main() {
let result = add(5, 3);
println!("The sum is: {}", result);
}
関数の戻り値の型は ->
の後に記述します。また、Rustでは暗黙の return
キーワードを使わず、最後の式の結果がそのまま返される特徴があります。このため、 x + y
の行にはセミコロンを付けていません。
Rustでは、基本的な制御構文を使用して条件分岐やループを実行できます。
条件分岐には if
キーワードを使います。Rustの if
文では条件に括弧を付ける必要がありませんが、ブロックの中には必ず {}
で囲む必要があります。
fn main() {
let number = 7;
if number < 5 {
println!("The number is less than 5");
} else if number > 5 {
println!("The number is greater than 5");
} else {
println!("The number is 5");
}
}
このコードは、 number
の値に応じて異なるメッセージを出力します。Rustでは、 if
文は式として使えるため、次のように値を代入する際にも使うことができます。
fn main() {
let condition = true;
let number = if condition { 5 } else { 10 };
println!("The value of number is: {}", number);
}
Rustには主に3つのループ構造があります。
無限ループ (loop
)r
fn main() {
let mut count = 0;
loop {
count += 1;
if count == 5 {
break;
}
println!("Count is: {}", count);
}
}
while
ループ
fn main() {
let mut num = 3;
while num != 0 {
println!("{}!", num);
num -= 1;
}
println!("Liftoff!");
}
for
ループ
for
ループはリストや範囲で繰り返しを行うために使用され、範囲演算子 (..
) と共に使うと便利です。
fn main() {
for number in 1..4 {
println!("The number is: {}", number);
}
}
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓