Agregar estudiante
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 49 de 56.
Define un método add_student que registre a un estudiante nuevo en el hash compartido student_records.
Rechazar los duplicados es la única rama: una vez que existe un estudiante, infórmalo y retorna sin sobrescribirlo.
Desafío
FácilEn la parte superior de tu archivo, conserva student_records = {}. Después define un método add_student(name, age, courses) que:
- Si
nameya es una clave enstudent_records, imprimeStudent '<name>' already exists.y retorna. - De lo contrario, guarda
{ age: age, grades: [], courses: courses }bajonamee imprimeStudent '<name>' added.
En la parte inferior de tu archivo, reemplaza el bloque de prueba por:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectEl resultado esperado es:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Como los métodos no pueden acceder a las variables locales del script que los contiene, declara student_records como $student_records (una variable global) para que el método pueda leerla y actualizarla. Usa también ese nombre dentro del método.
Pruébalo tú mismo
$student_records = {}
# TODO: def add_student(name, age, courses), evitar duplicados,
# almacenar { age:, grades: [], courses: }, imprimir añadido/ya existe
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas en profundidad
Descripción general de los métodos de cadenasInterpolación de cadenasIteración sobre cadenasSeparar y unirRepaso: Tejedor de cadenas4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end frente a llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasRepaso: iterador personalizado7Hashes Parte 2
Hash.new con valores predeterminadosIteración de hashesHashes anidadosCombinación y transformaciónRepaso: contador de frecuencias10Proyecto - Registros de estudiantes
Descripción general del proyectoAgregar estudiante5Potencia Enumerable
Select y RejectEncadenamiento de MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byRepaso: canalización de datosPractica por tu cuenta: Compilador de Ruby online