Visão Geral do Projeto
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 48 de 56.
Você vai construir um pequeno sistema de registros de alunos como um conjunto de métodos que compartilham um único hash aninhado. Com um formato diferente do Gerenciador de Biblioteca, sem loop de menu desta vez, apenas funções que você continuará estendendo.
O estado reside em um único hash de nível superior:
student_records = {}Cada entrada será indexada pelo nome, com um valor de hash contendo a idade, notas e cursos do aluno:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Cada lição adiciona um método que opera sobre este hash: add_student, add_grade, average_grade, list_by_course, top_students.
Desafio
InicianteInicialize um hash vazio chamado student_records no topo do seu arquivo. Em seguida, imprima-o com inspect para que o teste veja:
{}Essa é toda a tarefa, esta lição apenas configura o estado compartilhado para tudo o que se segue.
Folha de consulta
O sistema de registros de estudantes usa um único hash aninhado como estado compartilhado:
student_records = {}
Cada entrada é indexada pelo nome do estudante com um hash contendo age, grades e courses:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Use inspect para imprimir o conteúdo de um hash:
puts student_records.inspectExperimente você mesmo
# TODO: inicialize student_records = {} e imprima-o com inspect
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 e Fluxo
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline