Ruby OOP - 实例方法

Ruby OOP - Instance Method

Ruby OOP 初学者。尝试构建一个简单的自动售货机代码。

class VendingMachine
  # TODO: add relevant getter/setter to this class to make the scenarios work properly.
  attr_reader :snack_price_cents, :user_balance_cents
  attr_accessor :snack_count

  def initialize(snack_price_cents, snack_count)
    @user_balance_cents = 0
    @snack_count = snack_count
    @snack_price_cents = snack_price_cents
  end

  def insert_coin(input_cents)
    @user_balance_cents = user_balance_cents + input_cents if input_cents
  end

  def buy_snack
    if snack_count.zero? || user_balance_cents.zero?
      @snack_count = snack_count
    else
      @snack_count = snack_count - 1
      @user_balance_cents = user_balance_cents - snack_price_cents
    end
  end
end

我想了解当用户按下购买零食的按钮时 snack_countuser_balance_centssnack_price_cents 会发生什么?

似乎一切正常,除了 user_balance_cents 但我得到:

should not let you buy a snack if you didn't insert enough money (error path) (FAILED - 1)"

错误。有帮助吗?

我猜你的错误是你正在检查 user_balance_cents 不为零,但你至少没有检查 snack_price_cents.

即如果我投入 10c 并​​尝试购买 50c 的零食,它会给我。