Menu
Coddy logo textTech

復習 - 在庫項目

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

challenge icon

チャレンジ

中級

StockItem 構造体を、プロパティ name と quantity を備えるよう完成させてください。可変メソッド receive(_:)(加算)と ship(_:)(在庫が十分な場合のみ減算し、実行できたかどうかを返す)を追加し、数量が 0 の場合に tea: 12 または tea: out of stock を返す非可変メソッド label() も追加してください。

次に、process(start:commands:) を完成させてください。このメソッドはアイテムを作成し、最初のコマンドを実行する前に opening という名前でそのコピーを保持し、コマンドを適用します。そして、拒否された出荷ごとに 1 行(cannot ship 5)を返し、その後に now とアイテムのラベルを続け、さらに was と opening のラベルを続けます。

提供されたコードはアイテムを name,quantity として読み込み、コマンドを +n または -n として読み込み、返された各行を出力します。

コードは StockItem.swift と Functions.swift に記述してください。main.swift には提供された入出力コードが含まれており、編集できません。

自分で試してみよう

// 提供された入出力コード: そのままにしておく
var input: [String] = []
while let line = readLine() { input.append(line) }
let p = input[0].split(separator: ",").map(String.init)
let item = StockItem(name: p[0], quantity: Int(p[1])!)
for line in process(start: item, commands: Array(input.dropFirst())) { print(line) }

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド