Menu
Coddy logo textTech

Powtórzenie – lista kontaktów

Część sekcji Programowanie obiektowe ścieżki Ruby w Coddy. Lekcja 11 z 57.

challenge icon

Wyzwanie

Średni

Uzupeł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

Poćwicz samodzielnie: Kompilator Ruby online