Menu
Coddy logo textTech

複数の戻り値

CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 52/75。

Rustでは、戻り値の型としてタプルを使用することで、関数から複数の値を返すことができます。タプルは、1つのユニットにまとめられた異なる値のグループです。

例えば:

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // タプルを返す
}

そして、関数の呼び出し方は次のようになります:

let (x, y) = get_coordinates();
// タプルを分解して
// 個別の変数に代入します

println!("{}, {}", x, y);

タプルに要素を追加することで、必要な数だけ値を返すことができます。例えば:

fn get_details() -> (String, i32, f64) {
    let name = String::from("Alice");
    let age = 30;
    let score = 95.5;
    (name, age, score)
    // 3つの値を持つタプルを返す
}

関数の呼び出し方は以下のようになります:

let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);
challenge icon

チャレンジ

簡単

ユーザーの名前、年齢、メールアドレスを含むタプルを返す、get_user_infoという名前の関数を作成してください。関数のシグネチャは以下の通りです。

fn get_user_info() -> (String, i32, String)

関数内で、以下の変数を作成してください。

  • name: "Bob" で初期化された String
  • age: 25 で初期化された i32
  • email: "bob@example.com" で初期化された String

これら3つの値をタプルとして返します。

main 関数内で get_user_info を呼び出し、返されたタプルを nameageemail という名前の個別の変数に分割代入してください。その後、println! を使用して、以下の形式でこれらの値をコンソールに出力してください。

Name: [name], Age: [age], Email: [email]

チートシート

関数は、戻り値の型としてタプルを使用することで、複数の値を返すことができます。

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // タプルを返す
}

関数を呼び出し、タプルを個別の変数に構造分解します。

let (x, y) = get_coordinates();
println!("{}, {}", x, y);

異なる型の複数の値を返すこともできます。

fn get_details() -> (String, i32, f64) {
    let name = String::from("Alice");
    let age = 30;
    let score = 95.5;
    (name, age, score)
}
let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);

自分で試してみよう

fn get_user_info() -> (String, i32, String) {
    // ここで名前、年齢、メールアドレスの変数を作成します
    
    
    // タプルを返します
    
}

fn main() {
    // get_user_infoを呼び出し、返されたタプルを構造分解します
    
    
    // 値を出力します
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Fundamentalsのすべてのレッスン