Tuple Structs
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 25 de 66.
Enquanto structs regulares usam campos nomeados, o Rust oferece outro tipo chamado tuple structs. Eles fornecem uma maneira mais concisa de criar tipos personalizados quando você não precisa nomear cada campo individualmente.
Uma struct de tupla combina os benefícios de criar um novo tipo com a simplicidade de uma tupla. Você a define usando a palavra-chave struct seguida pelo nome do tipo e os tipos dos campos entre parênteses:
struct Color(i32, i32, i32);Isso cria um tipo Color que contém três valores i32, representando valores de cores RGB. Ao contrário de structs comuns, você não especifica nomes de campos - você acessa os valores por sua posição, assim como em tuplas.
Para criar uma instância de uma tuple struct, você fornece valores entre parênteses:
let red = Color(255, 0, 0);Você pode acessar campos individuais usando a notação de ponto com o índice do campo: red.0 fornece o primeiro valor, red.1 o segundo, e assim por diante.
Desafio
FácilVocê receberá três entradas: um valor de vermelho (como um número inteiro), um valor de verde (como um número inteiro) e um valor de azul (como um número inteiro). Defina uma tuple struct Color que contenha três valores i32 representando os componentes de cor RGB. Crie uma instância desta tuple struct usando os valores de entrada, depois acesse e imprima cada componente de cor usando a notação de índice.
Requisitos:
- Defina uma tuple struct
Colorcom três camposi32 - Leia a primeira entrada e converta-a para
i32para o valor de vermelho - Leia a segunda entrada e converta-a para
i32para o valor de verde - Leia a terceira entrada e converta-a para
i32para o valor de azul - Crie uma instância da tuple struct
Colorcom esses valores - Acesse cada campo usando a notação de ponto com índices (0, 1, 2) e imprima as informações de cor no formato exato mostrado abaixo
Entrada:
- Primeira linha: Valor de vermelho como um número inteiro (ex:
255) - Segunda linha: Valor de verde como um número inteiro (ex:
128) - Terceira linha: Valor de azul como um número inteiro (ex:
0)
Saída:
- Primeira linha:
Red: [red_value] - Segunda linha:
Green: [green_value] - Terceira linha:
Blue: [blue_value]
Folha de consulta
Uma struct de tupla é uma struct sem campos nomeados. Ela combina os benefícios de criar um novo tipo com a simplicidade de uma tupla.
Defina uma struct de tupla usando a palavra-chave struct seguida pelo nome do tipo e os tipos dos campos entre parênteses:
struct Color(i32, i32, i32);Crie uma instância fornecendo valores entre parênteses:
let red = Color(255, 0, 0);Acesse os campos usando a notação de ponto com o índice do campo:
red.0 // primeiro valor
red.1 // segundo valor
red.2 // terceiro valorExperimente você mesmo
use std::io;
// TODO: Defina sua struct de tupla Color aqui
fn main() {
// Ler o valor de vermelho
let mut red_input = String::new();
io::stdin().read_line(&mut red_input).expect("Failed to read line");
let red: i32 = red_input.trim().parse().expect("Invalid input");
// Ler o valor de verde
let mut green_input = String::new();
io::stdin().read_line(&mut green_input).expect("Failed to read line");
let green: i32 = green_input.trim().parse().expect("Invalid input");
// Ler o valor de azul
let mut blue_input = String::new();
io::stdin().read_line(&mut blue_input).expect("Failed to read line");
let blue: i32 = blue_input.trim().parse().expect("Invalid input");
// TODO: Crie uma instância da struct de tupla Color usando os valores de entrada
// TODO: Acesse e imprima cada componente de cor usando a notação de índice
// Formato: Red: [value], Green: [value], Blue: [value]
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
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 Final