Menu
Coddy logo textTech

복습 - 도서관 카드

Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 6번째.

challenge icon

챌린지

중급

LibraryCard 클래스를 완성하세요. initialize(name, limit = 3)은 이름과 대여 한도를 저장하고, 대여된 제목이 없는 상태로 시작합니다. borrow(title)은 카드가 한도에 도달했거나 이미 해당 제목을 보유하고 있는 경우를 제외하고, true를 반환하고 제목을 추가합니다. 이러한 경우에는 false를 반환합니다. give_back(title)은 제목을 제거했을 때 true를 반환합니다. to_s는 제목을 대여한 순서대로 포함하여 Ada: 2/3 (Dune, Emma)을 반환하거나, 대여한 것이 없을 때 Ada: 0/3을 반환합니다.

제공된 코드는 이름과 한도(기본값을 사용하려면 -)를 읽은 다음, +title 또는 -title 형식의 명령을 읽습니다. 각 명령에 대해 ok 또는 no를 출력하고, 마지막으로 카드를 출력합니다.

코드는 library_card.rb에 작성하세요. main.rb에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.

직접 해보기

require_relative 'library_card'

# 제공된 입/출력 코드: 있는 그대로 유지하세요
input = []
while (line = gets)
  input << line.chomp
end
card = input[1] == "-" ? LibraryCard.new(input[0]) : LibraryCard.new(input[0], input[1].to_i)
input.drop(2).each do |cmd|
  title = cmd[1..]
  done = cmd.start_with?("+") ? card.borrow(title) : card.give_back(title)
  puts done ? "ok" : "no"
end
puts card

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 Ruby 컴파일러