복습 - 쿠폰 코드
Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 16번째.
챌린지
중급Coupon 클래스를 완성하세요. 팩토리 Coupon.parse(code)는 백분율이 뒤따르는 SAVE(SAVE10) 또는 금액이 뒤따르는 OFF(OFF5)를 허용하며, 그 외의 코드는 nil을 반환합니다. 상수 MAX_PERCENT(50)를 초과하는 백분율은 50으로 줄입니다. 팩토리가 생성하는 모든 쿠폰은 클래스 인스턴스 변수에 집계되며 Coupon.issued로 읽을 수 있습니다. new를 private으로 만드세요. apply(total)은 할인된 합계를 반환하며, 그 값은 절대로 0보다 작아지지 않습니다. to_s는 SAVE10 (10% off) 또는 OFF5 (5.00 off)를 반환합니다.
제공된 코드는 첫 번째 줄에서 주문 합계를 읽고, 그다음 각 줄에서 하나의 코드를 읽습니다. SAVE10 (10% off): 90.00 또는 invalid code HELLO를 출력하고, 마지막으로 issued: 2를 출력합니다.
코드는 coupon.rb에 작성하세요. main.rb에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.
직접 해보기
require_relative 'coupon'
# 제공된 입력/출력 코드: 그대로 유지하세요
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}"
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러