Menu
Coddy logo textTech

Tekrar - Kupon Kodları

Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 16 / 57.

challenge icon

Görev

Orta

Coupon sınıfını tamamla. Fabrika Coupon.parse(code), ardından bir yüzde gelen SAVE (SAVE10) veya ardından bir miktar gelen OFF (OFF5) ifadelerini kabul eder ve diğer tüm kodlar için nil döndürür. MAX_PERCENT sabitinden (50) büyük yüzdeler 50'ye düşürülür. Fabrikanın oluşturduğu her kupon bir sınıf örneği değişkeninde sayılır; bu değere Coupon.issued olarak erişilebilir. new metodunu private yap. apply(total) indirimli toplamı döndürür; bu değer hiçbir zaman 0'ın altında olmaz. to_s ise SAVE10 (10% off) veya OFF5 (5.00 off) döndürür.

Sağlanan kod, sipariş toplamını ilk satırdan ve sonraki her satırdan bir kod okur. SAVE10 (10% off): 90.00 veya invalid code HELLO yazdırır ve son olarak issued: 2 yazdırır.

Kodun coupon.rb dosyasına yazılmalıdır. main.rb, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

require_relative 'coupon'

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input = []
while (line = gets)
  input << line.chomp
end
total = input[0].to_f
input.drop(1).each do |code|
  coupon = Coupon.parse(code)
  if coupon
    puts format("%s: %.2f", coupon, coupon.apply(total))
  else
    puts "invalid code #{code}"
  end
end
puts "issued: #{Coupon.issued}"

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi