Menu
Coddy logo textTech

Repaso: lista de contactos

Parte de la sección Programación orientada a objetos del Journey de Ruby de Coddy. Lección 11 de 57.

challenge icon

Desafío

Intermedio

Completa la clase Contact. name, email y phone se pueden leer. El establecedor email= almacena la dirección en minúsculas y genera ArgumentError con invalid email: x cuando no contiene @ o no contiene . después de @. El establecedor phone= conserva únicamente los dígitos y genera ArgumentError con invalid phone: x cuando quedan menos de 7 dígitos. initialize(name, email, phone) utiliza ambos establecedores. Dos contactos son iguales con == cuando sus direcciones de correo electrónico son iguales. to_s devuelve Ada (ada@mail.io, 5551234).

El código proporcionado lee los contactos como líneas con el formato name,email,phone. Imprime added Ada (ada@mail.io, 5551234), duplicate ada@mail.io para un contacto igual a uno ya agregado, o el mensaje de error, y finalmente contacts: 2.

Tu código va en contact.rb. main.rb contiene el código proporcionado de entrada/salida y no se puede editar.

Pruébalo tú mismo

require_relative 'contact'

# Código de entrada/salida suministrado: 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}"

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de Ruby online