Powtórzenie – lista kontaktów
Część sekcji Programowanie obiektowe ścieżki Ruby w Coddy. Lekcja 11 z 57.
Wyzwanie
ŚredniUzupełnij klasę Contact. Można odczytywać name, email i phone. Setter email= zapisuje adres małymi literami i zgłasza ArgumentError z komunikatem invalid email: x, gdy nie ma w nim @ lub po @ nie ma .. Setter phone= pozostawia tylko cyfry i zgłasza ArgumentError z komunikatem invalid phone: x, gdy pozostaje mniej niż 7 cyfr. initialize(name, email, phone) używa obu setterów. Dwa kontakty są równe za pomocą ==, gdy ich adresy e-mail są równe. to_s zwraca Ada (ada@mail.io, 5551234).
Dostarczony kod odczytuje kontakty z wierszy w formacie name,email,phone. Wypisuje added Ada (ada@mail.io, 5551234), duplicate ada@mail.io dla kontaktu równego jednemu z już dodanych albo komunikat o błędzie, a na końcu contacts: 2.
Twój kod umieść w pliku contact.rb. Plik main.rb zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
require_relative 'contact'
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input = []
while (line = gets)
input << line.chomp
end
contacts = []
input.each do |line|
name, email, phone = line.split(",")
begin
contact = Contact.new(name, email, phone)
if contacts.include?(contact)
puts "duplicate #{contact.email}"
else
contacts << contact
puts "added #{contact}"
end
rescue ArgumentError => e
puts e.message
end
end
puts "contacts: #{contacts.size}"
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasZmienne instancjiMetody i selfto_s i inspectPowtórzenie – karta biblioteczna4Hermetyzacja
Metody prywatneMetody chronionePrywatne setteryOchrona stanuPowtórzenie – automat vendingowy7Polimorfizm i typowanie kacze
PolimorfizmTypowanie kaczeMetody abstrakcyjnecase i klasyPowtórzenie – metody płatności10Wzorce projektowe, część 2
Delegowanie z ForwardableWzorzec dekoratoraWzorzec budowniczegoWzorzec stanu2Metody dostępowe i self
Gettery i setteryWłasne setteryself w metodachTożsamość i równośćPowtórzenie – lista kontaktów5Dziedziczenie
PodklasyNadpisywanie metodWywoływanie superis_a? i przodkowiePowtórka – lista płac pracowników8Metody specjalne
Równość i hashMetody operatorówIndeksowanie i dodawanieWłasne kolekcjePowtórka – ułamki11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książekPoćwicz samodzielnie: Kompilator Ruby online