Menu
Coddy logo textTech

構造体フィールドへのアクセス

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 22/66。

構造体のインスタンスを作成したら、その中に格納されている値を取得する方法が必要になります。Rustでは、構造体内の個々のフィールドにアクセスするためにドット記法を使用します。

構文は単純です。構造体のインスタンス名を書き、その後にドットを続け、アクセスしたいフィールド名を記述します。

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

このドット記法は、他のプログラミング言語でプロパティにアクセスするのとまったく同じように機能します。アクセスされた値は、式の中で使用したり、変数に代入したり、関数に渡したりすることができます。これらは、その型の他の値とまったく同じように動作します。

challenge icon

チャレンジ

簡単

3つの入力(車のモデル名、車の製造年(整数)、走行距離(整数))を受け取ります。3つのフィールド(String型のmodeli32型のyeari32型のmileage)を持つCar構造体を定義してください。入力値を使用してこの構造体のインスタンスを作成し、各フィールドにアクセスして出力してください。

要件:

  • フィールドmodel: Stringyear: i32mileage: i32を持つCar構造体を定義する
  • 最初の入力を車のモデルとして読み込む
  • 2番目の入力を読み込み、製造年としてi32に変換する
  • 3番目の入力を読み込み、走行距離としてi32に変換する
  • これらの値を使用してCar構造体のインスタンスを作成する
  • ドット記法を使用して各フィールドにアクセスし、以下に示す正確な形式で車の情報を出力する

入力:

  • 1行目: 車のモデル (例: Tesla Model 3)
  • 2行目: 整数としての製造年 (例: 2022)
  • 3行目: 整数としての走行距離 (例: 15000)

出力:

  • 1行目: Car: [model]
  • 2行目: Year: [year]
  • 3行目: Mileage: [mileage] km

チートシート

構造体インスタンス内のフィールドにアクセスするには、ドット記法を使用します:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

構文は次の通りです:instance_name.field_name。アクセスした値は、式の中で使用したり、変数に代入したり、関数に渡したりすることができます。

自分で試してみよう

use std::io;

// TODO: ここでCar構造体を定義します。フィールド:model、year、mileage

fn main() {
    // 車のモデルを読み込む
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // 年式を読み込む
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // 走行距離を読み込む
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: 入力値を使用してCar構造体のインスタンスを作成する
    
    // TODO: 各フィールドにアクセスし、指定された形式で出力する
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz icon腕試し

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

Logic & Flowのすべてのレッスン