Dodawanie ucznia
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 49 z 56.
Zdefiniuj metodę add_student, która rejestruje nowego ucznia we współdzielonym haszu student_records.
Odmowa dodania duplikatów to jedyna gałąź warunkowa: gdy uczeń już istnieje, zgłoś to i zakończ działanie bez nadpisywania danych.
Wyzwanie
ŁatwyNa początku pliku pozostaw student_records = {}. Następnie zdefiniuj metodę add_student(name, age, courses), która:
- Jeśli
namejest już kluczem wstudent_records, wypisujeStudent '<name>' already exists.i kończy działanie. - W przeciwnym razie zapisuje
{ age: age, grades: [], courses: courses }pod kluczemnamei wypisujeStudent '<name>' added.
Na końcu pliku zastąp blok testowy następującym kodem:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectOczekiwany wynik:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Ponieważ metody nie widzą zmiennych lokalnych z otaczającego skryptu, zadeklaruj student_records jako $student_records (zmienną globalną), aby metoda mogła odczytywać tę zmienną i ją aktualizować. Używaj tej nazwy również wewnątrz metody.
Spróbuj swoich sił
$student_records = {}
# TODO: def add_student(name, age, courses), zapobiegaj duplikatom,
# zapisz { age:, grades: [], courses: }, wypisz informację o dodaniu lub o tym, że student już istnieje
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocenPoćwicz samodzielnie: Kompilator Ruby online