復習 - 連絡先リスト
CoddyのRubyジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 11/57。
チャレンジ
中級Contact クラスを完成させてください。name、email、phone は読み取れます。セッター email= はアドレスを小文字で保存し、@ がない場合、または @ の後に . がない場合は、invalid email: x を伴う ArgumentError を発生させます。セッター phone= は数字だけを残し、残った数字が 7 桁未満の場合は、invalid phone: x を伴う ArgumentError を発生させます。initialize(name, email, phone) は両方のセッターを使用します。メールアドレスが等しい場合、== によって 2 つの連絡先は等しいと判定されます。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オンラインコンパイラ