Menu
Coddy logo textTech

복습 - 연락처 목록

Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 11번째.

challenge icon

챌린지

중급

Contact 클래스를 완성하세요. name, email, phone을 읽을 수 있습니다. 세터 email=은 주소를 소문자로 저장하며, @가 없거나 @ 뒤에 .이 없으면 invalid email: x와 함께 ArgumentError를 발생시킵니다. 세터 phone=은 숫자만 남기며, 남은 숫자가 7개 미만이면 invalid phone: x와 함께 ArgumentError를 발생시킵니다. 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 컴파일러