2013-03-25 134 views
0

尝试使用新的LearnStreet在线教程来学习Ruby。停滞在LearnStreet Ruby培训。简单的Ruby代码第5课

你现在可以写一个方法add_interest!在账户对象上,它取一个参数百分比并将该百分比的余额添加到账户中?

提示2 调用具有参数的方法10

提示1个 百分比计算 - (@balance *百分比)/ 100

我尝试:

def account.add_interest!(percentage) 
    (@balance * percentage)/100 
end 

account.add_interest!(10) 

我在想什么?

回答

0

看来你需要设置@balance。您的方法add_interest!仅返回值,但不会将@balance实例变量设置为新值。

def add_interest!(percentage) 
    interest = (@balance * percentage)/100 
    @balance = @balance + interest 
end 

可能会更好地工作。

在方法的末尾添加爆炸!是与其他Ruby开发人员沟通的常用方法,该方法会执行令人惊讶的操作,如永久变更对象。

+1

不,这不是什么爆炸方法。爆炸法意味着该方法与非爆炸方法做同样的事情,但以更令人惊讶的方式。如果还有相应的非爆炸方法,那么应该只有一种爆炸方法,爆炸方法与突变无关。 – 2013-03-26 01:07:56

+0

将@balance设置为(@balance * percentage)/ 100在这里并没有真正实现。这就像是说余额等于余额的百分比。 – DnfD 2013-03-27 15:45:25

+0

啊,大卫。我更关注于设置实例变量,并使用OP的原始代码。感谢您指出。 – tbeseda 2013-03-28 16:00:00

0

我对Ruby非常陌生,但只是想打个招呼。让我知道你是否有任何问题。我95%确定这可以重构。在learnstreet

class Account 
    def self.add_interest_to_current_balance(balance, percentage) 
    percentage_amount_in_dollars = (percentage * balance)/(100) 
    percentage_amount_in_dollars + balance 
    end 
end 

puts Account.add_interest_to_current_balance(500, 10) #should return 550 
+0

我相信LearnStreet应用程序查看实例变量以允许用户完成练习,所以方法应该设置'@ balance'。 – tbeseda 2013-03-28 16:03:38

+0

哦好吧,我明白了,我从来没有学过LearnStreet,所以idk。如果OP会发布他的包含@balance的方法,这将会有所帮助,那么这将更容易理解。 – DnfD 2013-03-29 16:07:11

0

100%的工作

def account.add_interest!(percentage) 
    @balance = @balance + (@balance * percentage)/100 
end 

account.add_interest!(10) 

我被困在太,前:d

0

这对我的回答工作,不妨一试:

def add_interest!(percentage) 

    interest = (@balance * percentage)/100 

    @balance = @balance + interest 

end 

account.add_interest!(10)