Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - قائمة جهات الاتصال

جزء من قسم البرمجة كائنية التوجه في رحلة 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 عبر الإنترنت