Inserindo Pares Chave-Valor
Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 29 de 66.
Agora que você tem um mapa hash vazio, é hora de adicionar alguns dados a ele. Você pode inserir pares de chave-valor em um mapa hash usando o método .insert():
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");O método .insert() recebe dois parâmetros: a chave e o valor. Neste exemplo, estamos armazenando nomes de países como chaves e suas cidades capitais como valores.
Há um comportamento importante a ser lembrado: se você inserir uma chave que já existe no mapa hash, o novo valor substituirá o antigo:
capitals.insert("France", "Lyon"); // Isso sobrescreve "Paris"Após essa operação, consultar "France" retornaria "Lyon" em vez de "Paris". Esse comportamento de sobrescrita torna .insert() útil tanto para adicionar novas entradas quanto para atualizar as existentes no seu mapa hash.
Desafio
FácilVocê receberá três entradas: o nome de um produto, seu preço (como um número decimal) e o nome de outro produto. Crie um mapa hash mutável para armazenar os nomes dos produtos como chaves (tipo String) e seus preços como valores (tipo f64). Insira o primeiro produto com seu preço no mapa hash. Em seguida, insira o segundo produto com um preço de 0.0. Por fim, atualize o preço do segundo produto para 15.99, inserindo-o novamente com o novo preço. Imprima todas as informações no formato exato mostrado abaixo.
Observação sobre .clone(): Ao inserir uma variável String como chave em um HashMap, as regras de propriedade do Rust fazem com que a variável seja movida para o mapa e não possa mais ser usada posteriormente. Para continuar usando a variável (por exemplo, para imprimi-la ou inseri-la novamente), chame .clone() nela ao passá-la para insert(). Por exemplo: map.insert(name.clone(), price).
Requisitos:
- Importe
HashMapdestd::collections - Crie um mapa hash mutável com os tipos
HashMap<String, f64> - Leia a primeira entrada como o nome do primeiro produto
- Leia a segunda entrada e converta-a para
f64para obter o preço do primeiro produto - Insira o primeiro produto e seu preço no mapa hash usando
.clone()no nome do produto - Leia a terceira entrada como o nome do segundo produto
- Insira o segundo produto com um preço de
0.0usando.clone()no nome do produto - Insira o segundo produto novamente com um preço de
15.99usando.clone()(isso substituirá o valor anterior) - Imprima as informações dos dois produtos no formato exato mostrado abaixo
Entrada:
- Primeira linha: nome do primeiro produto (por exemplo,
Laptop) - Segunda linha: preço do primeiro produto como um número decimal (por exemplo,
999.99) - Terceira linha: nome do segundo produto (por exemplo,
Mouse)
Saída:
- Primeira linha:
Inserted [first_product] at $[price] - Segunda linha:
Inserted [second_product] at $0.00 - Terceira linha:
Updated [second_product] to $15.99
Experimente você mesmo
use std::collections::HashMap;
use std::io;
fn main() {
// Ler entradas
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: Escreva seu código abaixo
// Crie um HashMap mutável, insira os produtos e imprima a saída necessária
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo FinalPratique por conta própria: Compilador de Rust online