Aggiungere uno studente
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 49 di 56.
Definisci un metodo add_student che registra un nuovo studente nell'hash condiviso student_records.
Il rifiuto dei duplicati è l'unico ramo: una volta che uno studente esiste, segnalalo e restituisci il controllo senza sovrascrivere.
Sfida
FacileAll'inizio del file, mantieni student_records = {}. Poi definisci un metodo add_student(name, age, courses) che:
- Se
nameè già una chiave instudent_records, stampaStudent '<name>' already exists.e termina. - Altrimenti memorizza
{ age: age, grades: [], courses: courses }sottonamee stampaStudent '<name>' added.
Alla fine del file, sostituisci il blocco di test con:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectL'output previsto è:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Poiché i metodi non possono accedere alle variabili locali dello script che li racchiude, dichiara student_records con $student_records (una variabile globale), così il metodo può leggerla e aggiornarla. Usa anche quel nome all'interno del metodo.
Provalo tu
$student_records = {}
# TODO: def add_student(name, age, courses), evita i duplicati,
# memorizza { age:, grades: [], courses: }, stampa aggiunto/già esistente
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online