복습 - 연락처 목록
Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 11번째.
챌린지
중급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 컴파일러