Ôn tập: Danh sách liên hệ
Thuộc phần Lập trình hướng đối tượng trong hành trình Ruby của Coddy. Bài học 11 trên 57.
Thử thách
Trung bìnhHoàn thiện lớp Contact. Bạn có thể đọc name, email và phone. Setter email= lưu địa chỉ ở dạng chữ thường và phát sinh ArgumentError với invalid email: x khi địa chỉ không có @ hoặc không có . sau @. Setter phone= chỉ giữ lại các chữ số và phát sinh ArgumentError với invalid phone: x khi còn ít hơn 7 chữ số. initialize(name, email, phone) dùng cả hai setter. Hai liên hệ bằng nhau theo == khi email của chúng giống nhau. to_s trả về Ada (ada@mail.io, 5551234).
Code được cung cấp đọc các liên hệ từ những dòng có dạng name,email,phone. Code in ra added Ada (ada@mail.io, 5551234), duplicate ada@mail.io nếu liên hệ trùng với một liên hệ đã thêm, hoặc thông báo lỗi, rồi cuối cùng in ra contacts: 2.
Đặt code của bạn trong contact.rb. main.rb chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
Tự làm thử
require_relative 'contact'
# Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
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}"
Tất cả bài học trong Lập trình hướng đối tượng
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpBiến instancePhương thức và selfto_s và inspectÔn tập: thẻ thư viện4Tính đóng gói
Phương thức riêng tưPhương thức được bảo vệPhương thức thiết lập riêng tưBảo vệ trạng tháiÔn tập: máy bán hàng tự động7Tính đa hình và duck typing
Tính đa hìnhDuck typingPhương thức trừu tượngcase và lớpÔn tập: phương thức thanh toán2Phương thức truy cập và self
Phương thức đọc và ghiPhương thức gán tùy chỉnhself trong phương thứcĐịnh danh và tính bằng nhauÔn tập: Danh sách liên hệTự luyện tập: Trình biên dịch Ruby online