Riepilogo - Elenco contatti
Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 11 di 57.
Sfida
MedioCompleta 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
1Classi e oggetti
Lavorare con i fileDefinire le classiVariabili d'istanzaMetodi e selfto_s e inspectRipasso - Tessera della biblioteca4Incapsulamento
Metodi privatiMetodi protettiSetter privatiProteggere lo statoRiepilogo - Distributore automatico7Polimorfismo e Duck Typing
PolimorfismoDuck TypingMetodi astratticase e classiRiepilogo - Metodi di pagamento10Pattern di progettazione Parte 2
Delegazione con ForwardablePattern DecoratorPattern BuilderPattern State2Metodi di accesso e self
Metodi di lettura e scritturaSetter personalizzatiself nei metodiIdentità e uguaglianzaRiepilogo - Elenco contatti5Ereditarietà
SottoclassiRidefinizione dei metodiChiamare superis_a? e antenatiRiepilogo - Paghe del personale8Metodi speciali
Uguaglianza e hashMetodi degli operatoriIndicizzazione e appendCollezioni personalizzateRiepilogo - Frazioni11Progetto: Gestione della biblioteca
Libri e iscrittiPrendere in prestito i libriEsercitati da solo: Compilatore Ruby online