Menu
Coddy logo textTech

Riepilogo - Elenco contatti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 11 di 57.

challenge icon

Sfida

Medio

Completa la classe Contact. È possibile leggere name, email e phone. Il setter email= memorizza l’indirizzo in minuscolo e solleva ArgumentError con invalid email: x quando non contiene @ o non contiene . dopo @. Il setter phone= mantiene solo le cifre e solleva ArgumentError con invalid phone: x quando rimangono meno di 7 cifre. initialize(name, email, phone) usa entrambi i setter. Due contatti sono uguali con == quando le loro email sono uguali. to_s restituisce Ada (ada@mail.io, 5551234).

Il codice fornito legge i contatti da righe nel formato name,email,phone. Stampa added Ada (ada@mail.io, 5551234), duplicate ada@mail.io per un contatto uguale a uno già aggiunto, oppure il messaggio di errore, e infine contacts: 2.

Il tuo codice va in contact.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

require_relative 'contact'

# Código de entrada/salida proporcionado: mantenlo tal como está
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}"

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Ruby online