Menu
Coddy logo textTech

Récapitulatif - Liste de contacts

Fait partie de la section Programmation orientée objet du Journey Ruby de Coddy. Leçon 11 sur 57.

challenge icon

Défi

Moyen

Complétez la classe Contact. name, email et phone peuvent être lus. Le setter email= enregistre l’adresse en minuscules et lève ArgumentError avec invalid email: x lorsqu’elle ne contient pas de @ ou aucun . après le @. Le setter phone= ne conserve que les chiffres et lève ArgumentError avec invalid phone: x lorsqu’il reste moins de 7 chiffres. initialize(name, email, phone) utilise les deux setters. Deux contacts sont égaux avec == lorsque leurs adresses e-mail sont égales. to_s renvoie Ada (ada@mail.io, 5551234).

Le code fourni lit les contacts sous forme de lignes name,email,phone. Il affiche added Ada (ada@mail.io, 5551234), duplicate ada@mail.io pour un contact égal à un contact déjà ajouté, ou le message d’erreur, puis enfin contacts: 2.

Votre code doit se trouver dans contact.rb. main.rb contient le code fourni pour les entrées et les sorties et ne peut pas être modifié.

Essayez vous-même

require_relative 'contact'

# Code d'entrée/sortie fourni : le garder tel quel
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}"

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur Ruby en ligne