Learnstreet Ruby课程11.5在对象之间传输状态

时间:2013-08-11 00:16:47

标签: ruby

我已经被困在这个Learnstreet课程上一天了。练习提示:

  

现在可以实现一个名为transfer的方法!它有两个参数,amount和other_account。该方法应从当前对象中提取指定的金额并将其存入other_account对象。

编辑器中的代码如下:

class BankAccount

    attr_accessor :name, :balance, :address

    def initialize(name, balance, address)
        @name =  name
        @balance = balance
        @address = address
    end

    def withdraw!(amount)
        if @balance - amount > 0
            @balance = @balance - amount
        end
        @balance
    end

    def deposit!(amount)
        @balance += amount
    end

    # your code here

end

alices_account = BankAccount.new("Alice Cooper", 2500, "456 University Avenue")
bobs_account = BankAccount.new("Bob Ventura", 2100, "3500 Fox Street")

我知道你需要设置一个带def def的方法!(amount,other_account)。但是我不知道在alices_account和bobs_account之后放在底部的内容。

2 个答案:

答案 0 :(得分:0)

你可以在其中一个对象上调用transfer!,传入另一个对象,例如,

bobs_account.transfer!(500, alices_account)

您只是在实例上调用方法,例如"foo".size[1, 2, 3].each等。唯一的区别是创建了您正在调用的方法

答案 1 :(得分:0)

  

我知道你需要设置一个def转移的方法!(金额,其他_帐户)。

所以基本上你必须创建BankAccount#transfer!,从调用它的对象中提取一些钱并将总和存入“其他”BankAccount对象。

由于您已设置BankAccount#withdraw!BankAccount#deposit!,因此解决方案非常简单:

def transfer!(amount, other_account)
    withdraw! amount
    other_account.deposit! amount
end
  

但是我不知道在alices_account和bobs_account之后放在底部的内容。

练习不要求你对后者做任何事情。如果您应该做某事,您需要知道要从alices_account转移到bobs_account的“金钱”金额,然后继续:

# assuming x to be the amount to transfer
alices_account.transfer! x, bobs_account

或:

# assuming x to be the amount to transfer
bobs_account.transfer! x, alices_account

好的,现在。我花了一个小时才完成了那个之前的所有10个课程,这就是我发现的。在某些时候,您get to write代码的最后两行。

然后发生了一件奇怪的事情。练习生成的代码在末尾which is obviously a syntax error附近包含. To。删除该行并添加上面提供的方法you get to pass the test