Outros Slices
Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 57 de 66.
Embora as fatias de strings sejam muito úteis, a criação de fatias não se limita apenas a strings. O conceito de fatia do Rust se estende a qualquer sequência de elementos, tornando-o uma ferramenta poderosa para trabalhar com coleções sem assumir a propriedade.
Você pode criar slices a partir de arrays e vetores usando a mesma sintaxe que aprendeu para strings. Por exemplo, se você tiver um array de números, poderá criar um slice que faz referência a parte dele ou a todo o array:
let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Isso nos dá [2, 3, 4]
let full_slice: &[i32] = &numbers; // Isso referencia o array inteiroO mesmo princípio funciona com vetores. Você pode criar slices a partir de vetores para trabalhar com partes dos dados sem movê-los nem copiá-los:
let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Isso nos dá [10, 20]Desafio
FácilVocê receberá três entradas. A primeira entrada é uma lista de números separados por vírgulas. A segunda entrada contém dois números separados por um espaço, representando os índices inicial e final para criar uma fatia. A terceira entrada é um único número que representa um índice para acessar na fatia.
Crie um vetor a partir dos números separados por vírgulas e, em seguida, crie uma fatia usando o intervalo especificado. Acesse o elemento no índice fornecido na fatia e imprima-o.
Requisitos:
- Leia a primeira entrada (números separados por vírgulas) e remova os espaços em branco
- Divida a entrada por vírgulas e converta cada número para
i32 - Crie um vetor a partir desses números
- Leia a segunda entrada (dois números separados por um espaço) e remova os espaços em branco
- Divida a segunda entrada por espaço para obter os índices inicial e final
- Converta ambos os índices para
usize - Crie uma fatia a partir do vetor usando a sintaxe de intervalo
&vec[start..end] - Leia a terceira entrada (índice a ser acessado) e remova os espaços em branco
- Converta o índice para
usize - Acesse o elemento no índice especificado da fatia
- Imprima o elemento acessado
Entrada:
- Primeira linha: Números separados por vírgulas (por exemplo,
10,20,30,40,50) - Segunda linha: Dois números separados por um espaço (por exemplo,
1 4) - Terceira linha: Um número de índice (por exemplo,
2)
Saída:
- O elemento no índice especificado da fatia
Experimente você mesmo
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leia a primeira entrada (números separados por vírgula)
let first_input = lines.next().unwrap().unwrap();
// Leia a segunda entrada (índices de início e fim)
let second_input = lines.next().unwrap().unwrap();
// Leia a terceira entrada (índice a acessar)
let third_input = lines.next().unwrap().unwrap();
// TODO: Escreva seu código abaixo
// Analise os números separados por vírgula e crie um vetor
// Analise os índices de início e fim
// Crie uma fatia a partir do vetor
// Acesse o elemento no índice especificado da fatia
// Imprima o resultado
// println!("{}", result);
}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 Final6Lidando com a Ausência com 'Option'
O que é um 'Option'?Usando 'match' com 'Option'is_some() e is_none()Fazendo o unwrap de um 'Option'O método expectFornecendo um valor padrão: unwrap_orRecapitulação - Encontrar um Elemento9Slices de String e Mais
String vs. &strCriando Slices de StringSlices como Parâmetros de FunçãoOutros SlicesRecapitulação - Encontrar a Primeira PalavraPratique por conta própria: Compilador de Rust online