Menu
Coddy logo textTech

Повторение — список контактов

Часть раздела Объектно-ориентированное программирование путешествия по Ruby на Coddy. Урок 11 из 57.

challenge icon

Задание

Средне

Завершите класс Contact. name, email и phone можно читать. Сеттер email= сохраняет адрес в нижнем регистре и вызывает ArgumentError с сообщением invalid email: x, если в нём нет @ или после @ нет .. Сеттер phone= оставляет только цифры и вызывает ArgumentError с сообщением invalid phone: x, если осталось менее 7 цифр. initialize(name, email, phone) использует оба сеттера. Два контакта считаются равными с помощью ==, если их адреса электронной почты равны. to_s возвращает Ada (ada@mail.io, 5551234).

Предоставленный код считывает контакты в строках формата name,email,phone. Он выводит added Ada (ada@mail.io, 5551234), duplicate ada@mail.io для контакта, равного уже добавленному, или сообщение об ошибке, а в конце — contacts: 2.

Ваш код должен находиться в contact.rb. В main.rb содержится предоставленный код ввода-вывода, и его нельзя редактировать.

Попробуйте сами

require_relative 'contact'

# Предоставленный код ввода/вывода: оставьте его как есть
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}"

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby