키-값 쌍 삽입하기
Coddy Rust 여정의 논리와 흐름 섹션에 포함된 레슨. 66개 중 29번째.
이제 비어 있는 해시 맵이 있으므로, 여기에 데이터를 추가할 차례입니다. .insert() 메서드를 사용하여 해시 맵에 키-값 쌍을 삽입할 수 있습니다:
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");.insert() 메서드는 두 개의 매개변수인 키와 값을 받습니다. 이 예제에서는 국가 이름을 키로, 해당 국가의 수도인 cities를 값으로 저장합니다.
기억해야 할 중요한 동작이 있습니다. 해시 맵에 이미 존재하는 키를 삽입하면 새 값이 이전 값을 덮어씁니다:
capitals.insert("France", "Lyon"); // 이것은 "Paris"를 덮어씁니다이 작업 후에는 "France"를 조회하면 "Paris" 대신 "Lyon"이 반환됩니다. 이러한 덮어쓰기 동작 덕분에 .insert()는 해시 맵에 새 항목을 추가하고 기존 항목을 업데이트하는 데 모두 유용합니다.
챌린지
쉬움세 가지 입력을 받습니다. 제품 이름, 가격(십진수), 그리고 또 다른 제품 이름입니다. 제품 이름을 키(String 유형)로, 가격을 값(f64 유형)으로 저장할 수 있는 가변 해시 맵을 생성하세요. 첫 번째 제품과 해당 가격을 해시 맵에 삽입하세요. 그런 다음 두 번째 제품을 0.0의 가격으로 삽입하세요. 마지막으로 새 가격과 함께 다시 삽입하여 두 번째 제품의 가격을 15.99로 업데이트하세요. 아래에 표시된 정확한 형식으로 모든 정보를 출력하세요.
.clone()에 대한 참고: String 변수를 키로 HashMap에 삽입할 때 Rust의 소유권 규칙에 따라 해당 변수는 맵으로 이동되어 이후에는 더 이상 사용할 수 없습니다. 변수를 계속 사용하려면(예: 출력하거나 다시 삽입할 때), insert()에 전달할 때 변수에 .clone()을 호출하세요. 예: map.insert(name.clone(), price).
요구 사항:
std::collections에서HashMap을 가져오기HashMap<String, f64>유형의 가변 해시 맵 생성- 첫 번째 입력을 첫 번째 제품 이름으로 읽기
- 두 번째 입력을 읽고 첫 번째 제품의 가격을 위해
f64로 변환하기 - 제품 이름에
.clone()을 사용하여 첫 번째 제품과 해당 가격을 해시 맵에 삽입하기 - 세 번째 입력을 두 번째 제품 이름으로 읽기
- 제품 이름에
.clone()을 사용하여 두 번째 제품을0.0의 가격으로 삽입하기 .clone()을 사용하여 두 번째 제품을15.99의 가격으로 다시 삽입하기(이렇게 하면 이전 값이 덮어써집니다)- 아래에 표시된 정확한 형식으로 두 제품의 정보를 출력하기
입력:
- 첫 번째 줄: 첫 번째 제품 이름(예:
Laptop) - 두 번째 줄: 십진수로 표시된 첫 번째 제품 가격(예:
999.99) - 세 번째 줄: 두 번째 제품 이름(예:
Mouse)
출력:
- 첫 번째 줄:
Inserted [first_product] at $[price] - 두 번째 줄:
Inserted [second_product] at $0.00 - 세 번째 줄:
Updated [second_product] to $15.99
직접 해보기
use std::collections::HashMap;
use std::io;
fn main() {
// 입력 읽기
let mut product1 = String::new();
io::stdin().read_line(&mut product1).expect("Failed to read line");
let product1 = product1.trim().to_string();
let mut price1_input = String::new();
io::stdin().read_line(&mut price1_input).expect("Failed to read line");
let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
let mut product2 = String::new();
io::stdin().read_line(&mut product2).expect("Failed to read line");
let product2 = product2.trim().to_string();
// TODO: 아래에 코드를 작성하세요
// 가변 HashMap을 생성하고, 제품을 삽입한 후, 필요한 출력을 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Rust 컴파일러