在庫の確認
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 51/66。
チャレンジ
簡単4つの入力を受け取ります。最初の入力は確認するアイテム名です。2番目の入力は、在庫にあるアイテム名のカンマ区切りリストです。3番目の入力は、各アイテムに対応する価格のカンマ区切りリストです。4番目の入力は、各アイテムに対応する数量のカンマ区切りリストです。アイテム名をキーとし、価格と数量を含むタプル (f64, i32) を値とする在庫データを格納するための HashMap を構築してください。次に、.get() を使用してリクエストされたアイテムが在庫に存在するかどうかを確認し、適切な在庫情報を出力してください。
要件:
std::collectionsからHashMapをインポートすること- 最初の入力(確認するアイテム名)を読み込み、空白をトリミングすること
- 2番目の入力(カンマ区切りのアイテム名)を読み込み、空白をトリミングすること
- 3番目の入力(カンマ区切りの価格)を読み込み、空白をトリミングすること
- 4番目の入力(カンマ区切りの数量)を読み込み、空白をトリミングすること
- 在庫用にミュータブルな
HashMap<String, (f64, i32)>を作成すること - アイテム名をカンマで分割すること
- 価格をカンマで分割し、それぞれを
f64にパースすること - 数量をカンマで分割し、それぞれを
i32にパースすること - 各アイテムを、対応する価格と数量のタプルとともに在庫に挿入すること
.get()を使用して、リクエストされたアイテムが在庫に存在するか確認することmatch式を使用して、.get()から返されるOptionを処理することSomeアームでは、タプルから価格と数量を取り出し、以下を出力すること:[item_name] is in stockPrice: $[price]Quantity: [quantity]
Noneアームでは、以下を出力すること:[item_name] is not in stock
入力:
- 1行目: 確認するアイテム名 (例:
Laptop) - 2行目: カンマ区切りのアイテム名 (例:
Laptop,Mouse,Keyboard) - 3行目: カンマ区切りの価格 (例:
999.99,25.50,75.00) - 4行目: カンマ区切りの数量 (例:
15,50,30)
出力:
- アイテムが在庫に存在する場合:
- 1行目:
[item_name] is in stock - 2行目:
Price: $[price] - 3行目:
Quantity: [quantity]
- 1行目:
- アイテムが存在しない場合:
[item_name] is not in stock
自分で試してみよう
use std::collections::HashMap;
use std::io;
fn main() {
// 確認するアイテム名を読み込む
let mut item_to_check = String::new();
io::stdin().read_line(&mut item_to_check).expect("Failed to read line");
let item_to_check = item_to_check.trim();
// カンマ区切りのアイテム名を読み込む
let mut items_input = String::new();
io::stdin().read_line(&mut items_input).expect("Failed to read line");
let items_input = items_input.trim();
// カンマ区切りの価格を読み込む
let mut prices_input = String::new();
io::stdin().read_line(&mut prices_input).expect("Failed to read line");
let prices_input = prices_input.trim();
// カンマ区切りの数量を読み込む
let mut quantities_input = String::new();
io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
let quantities_input = quantities_input.trim();
// TODO: 以下にコードを記述してください
// 在庫データを格納するためのHashMapを作成します
// 入力を分割し、HashMapにデータを入れます
// .get() を使用してアイテムが存在するか確認します
// match を使用して Option を処理し、適切な出力を表示します
}