在ruby的简单信用卡类中创建哈希时出错

时间:2014-10-30 20:52:14

标签: ruby instance-variables method-call

我正在创建一个可以创建和更新信用卡的简单CC类。为此,我创建了cc_bal {}作为实例对象,以便更新尊重信用卡。哈希是为了保存和更新一个人及其cc上的金额。我最终得到的输出只是创建的原始数量,而不是更新的数量

下面是代码:

class CC

    def initialize(cc_name, cc_bal = {}, open_cc = false)
        @cc_name = cc_name
        @cc_bal = cc_bal
        @open_cc = open_cc
    end

    def create(initAmount, person)
        if initAmount > 0
            @open_cc = true
            @cc_bal[:person]=initAmount
            puts "congrats #{person} on opening your new #{@cc_name} CC! with $#{@cc_bal[:person]}" 
        else
            puts "sorry not enough funds"
        end
    end

    def update(amount, person)
        if @open_cc == true
            @cc_bal[:person] + amount
        else
            puts "sorry no account created, #{person}"
        end
        puts "#{person} has CC balance of #{@cc_bal[:person]}"
    end
end


#chase = Bank.new("JP Morgan Chase")
#wells_fargo = Bank.new("Wells Fargo")
me = Person.new("Shehzan", 500)
friend1 = Person.new("John", 1000)
#chase.open_account(me)
#chase.open_account(friend1)
#wells_fargo.open_account(me)
#wells_fargo.open_account(friend1)
#chase.deposit(me, 200)
#chase.deposit(friend1, 300)
#chase.withdraw(me, 50)
#chase.transfer(me, wells_fargo, 100)
#chase.deposit(me, 5000)
#chase.withdraw(me, 5000)
#puts chase.total_cash_in_bank
#puts wells_fargo.total_cash_in_bank
credit_card = CC.new("Visa")
credit_card.create(10,me)
credit_card.update(50,me)
credit_card.create(20,friend1)
credit_card.update(40,friend1)

请忽略已注释掉的函数调用。

知道为什么CC没有更新?

1 个答案:

答案 0 :(得分:1)

if @open_cc == true
  @cc_bal[:person] + amount
else

您增加了金额,但未在任何地方设置新值。它应该是

if @open_cc == true
  @cc_bal[:person] += amount
else

请注意。代码需要一些严肃的重构和清理。