質問: { horyu_1:0, horyu_2:0, horyu_3:0, . . . } ``` の様になってしまいます。 実際の開発だと、どのようにしてるのでしょうか?
回答: 会計でいうと、複数の商品を組み合わせた場合に割引かれる(おにぎりとペットボトル飲料とか)というのもありますね。それらも踏まえて、レジが何をするか順に考えてみましょう。 1. お客から商品を一つ受け取る 2. 商品の情報を「会計待ち」のリストに入れる(このとき、賞味期限切れとか酒類など販売制限があるものなどをチェックするでしょうかね) 3. 上記1,2を商品がなくなるまで繰り返す 4. 総金額を計算して提示する(このとき、商品の組み合わせによる割引だとか、特典カードによる割引などを行う) 5. 代金を受け取り、お釣りを返す 今回のお題はこの途中で割り込んで別の会計処理をすることになりますが、「会計待ち」のリストを保持さえできれば、割り込まれても問題ないことに気付けるかと思います。会計途中の情報は、すべてこのリストから計算できるものだからです。 割り込み時の手順としては、 1. 現時点の「会計待ち」リストを、「保留会計待ち」リストにコピーする 2. 「会計待ち」リストを空にする 3. 割り込み処理を行う 4. 「保留会計待ち」リストから「会計待ち」リストにコピーする という形になればいいはずです。