Menu
Coddy logo textTech

復習 - 連絡先リスト

CoddyのRubyジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 11/57。

challenge icon

チャレンジ

中級

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オンラインコンパイラ