0

我已经被这个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 transfer!(amount, other_account) 的方法。但是我不知道在 alices_account 和 bobs_account 之后在底部放什么。

4

2 回答 2

0

您会调用transfer!其中一个对象,并传入另一个对象,例如,

bobs_account.transfer!(500, alices_account)

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

于 2013-08-11T00:28:29.900 回答
0

我知道你需要设置一个带有 def transfer!(amount, other_account) 的方法。

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

该解决方案非常简单,因为您BankAccount#withdraw!已经BankAccount#deposit!设置了:

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

但是我不知道在 alices_account 和 bobs_account 之后在底部放什么。

该练习不需要您对后者做任何事情。如果你应该做某事,你需要知道从转移alices_accountbobs_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 门课程,这就是我发现的。在某些时候,您可以编写代码的最后两行。

然后奇怪的事情发生了。练习生成的代码包含一个. To接近尾声,这显然是一个语法错误。通过删除该行并添加我上面提供的方法,您可以通过测试

于 2013-08-11T01:52:14.230 回答