関数と制御フロー
関数の定義方法と、`if`/`else`、`loop`、`while`、`for`式を使ってプログラムの実行フローを制御する方法を学びます。
「関数と制御フロー」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全3レッスンが含まれています。
関数とは
関数は、特定の処理を実行する名前付きのコードブロックです。コードを整理し、再利用可能にするための基本的な仕組みです。
- コードの再利用:ロジックを一度記述するだけで、何度も使用できます。
- モジュール性:複雑な問題を、小さく扱いやすい部分に分割できます。
- 可読性:コードブロックに意味のある名前を付けることで、理解しやすくなります。
最初のRust関数
Rustでは、fnキーワードを使って関数を定義します。main関数は、すべてのRustプログラムのエントリーポイントです。
単純な関数を宣言して呼び出す方法は次のとおりです。
fn say_hello() {
println!("Hello from a function!");
}
fn main() {
say_hello(); // Call the function
println!("Back in main.");
}パラメーターを持つ関数
関数は、パラメーターと呼ばれる入力値を受け取れます。これにより、呼び出すたびに異なるデータを使って処理できます。
パラメーターは、名前と型をコロンで区切って定義します。
fn greet(name: &str) {
println!("Hello, {}!", name);
}
fn main() {
greet("Alice");
greet("Bob");
}戻り値を持つ関数
関数は、呼び出し元に値を返すこともできます。戻り値の型は、矢印(->)の後に指定します。
関数本体の最後の式は、暗黙的に返されます。戻り値となる式にはセミコロンは必要ありません。
fn add_numbers(x: i32, y: i32) -> i32 {
x + y // No semicolon: this expression is returned
}
fn main() {
let sum = add_numbers(5, 7);
println!("The sum is: {}", sum);
}条件分岐:`if`/`else`
if式を使うと、条件に応じて異なるコードブロックを実行できます。条件は必ずbool(trueまたはfalse)でなければなりません。
- 最初の条件には
ifを使います。 - 追加の条件には
else ifを使います。 - 他の条件に一致しなかった場合の処理には
elseを使います。
Rustのifは式なので、値を返すこともできます。
If-Else式を使ってみる
ifとelseを使って、条件に基づいて値を代入する方法は次のとおりです。他の言語の三項演算子と同じように動作することに注目してください。
fn main() {
let number = 7;
let message = if number < 10 {
"Small number"
} else {
"Large number"
};
println!("The number is: {}", message);
let other_num = 15;
if other_num % 2 == 0 {
println!("{} is even", other_num);
} else {
println!("{} is odd", other_num);
}
}コードの繰り返し:`loop`
loopキーワードは無限ループを作成します。明示的に停止するまで処理を繰り返したい場合に便利です。
breakを使うとループを終了できます。breakを使って、loop式から値を返すこともできます。
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2; // Break and return a value
}
};
println!("The result is {}", result);
}条件付きの繰り返し:`while`
whileループは、指定した条件がtrueである間、コードブロックを実行します。何回繰り返す必要があるか正確には分からない場合に適しています。
fn main() {
let mut count = 3;
while count != 0 {
println!("{}!", count);
count -= 1;
}
println!("LIFTOFF!!!");
}`for`ループで反復処理する
forループは、コレクションの要素や数値の範囲を反復処理するために使います。Rustで最もよく使われるループ構文であり、安全で簡潔なコードを書けます。
- 範囲と組み合わせて使うことが多くあります(例:
1..4は1、2、3、1..=4は1、2、3、4を表します)。 Iteratorトレイトを実装するあらゆる型で使用できます。
fn main() {
// Loop through a range
for number in 1..4 { // 1, 2, 3
println!("Number: {}", number);
}
// Loop through an array
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("The value is: {}", element);
}
}制御フローのチャレンジ
次のRustコードについて考えてみましょう。resultの最終的な値は何になるでしょうか。
fn calculate_value(input: i32) -> i32 {
if input > 10 {
input * 2
} else if input == 5 {
input + 5
} else {
input
}
}
fn main() {
let result = calculate_value(5);
// What is result?
}復習:関数と制御フロー
動的なプログラムを作るための基本要素を習得しました。
- 関数:
fn、パラメーター、戻り値を使ってコードを整理し、再利用します。 if/else:条件に応じて判断し、コードを実行します。式であることを忘れないでください。loop:無限ループを作成し、breakで終了し、値を返せます。while:条件がtrueである間、ループします。for:コレクションや範囲を安全に反復処理します。
これらの機能は、構造化された効率的なRustプログラムを書くために欠かせません。
よくある質問
「関数と制御フロー」レッスンは無料ですか?
はい。「関数と制御フロー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全3レッスンが含まれています。
「関数と制御フロー」で何を学びますか?
関数の定義方法と、`if`/`else`、`loop`、`while`、`for`式を使ってプログラムの実行フローを制御する方法を学びます。 ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn Rust Codingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「関数と制御フロー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn Rust Codingレッスンでコードを書いて実行できますか?
はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 変数、可変性、シャドーイング
- プリミティブ型と演算子
- 関数と制御フロー