gpt4 book ai didi

ruby - 使用 'super' 的 ruby​​ 中不合逻辑的 : circle of logic,

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:19 25 4
gpt4 key购买 nike

我一直在尝试根据子类中继承父类功能的方法的功能进行推理。但我似乎一直陷入这样的心理循环:one 没有 other 就无法行动,但是 < strong>other 不能在 one 之前...我脑袋疼...

好的,这是我在父类中的相关代码

class BankAccount
# method to initialize and other methods etc...

def withdraw(amount)
if (amount <= @balance)
@balance -= amount
else
'Insufficient funds'
end
end

end

这是我在子类中的相关代码

class CheckingAccount < BankAccount
# methods to initialize and other methods etc...

def withdraw
super
end

end

根据我正在学习的教程-我想要完成的是

  • “CheckingAccount 方法 #withdraw 在成功取款后将‘number_of_withdrawals’递增 1”

因此,如果我在我的 BankAccount 类中创建一个变量 number_of_withdrawals(如教程示例所提示的那样),那么当我调用 super 来自 withdraw 的子类版本,它将知道根据 if else 语句执行递增 number_of_withdrawals是否退出。

不应该在 BankAccount 类而不是 CheckingAccount 类中声明变量 number_of_withdrawals(即使教程示例暗示要将它在 CheckingAccount 类中)。要全面了解这一点,请参阅下面我当前代码状态的测试规范 () 的要点:

Test Specs / Code Attempt

如果有人可以提供一个工作示例

  • “CheckingAccount 方法 #withdraw 在成功取款后将‘number_of_withdrawals’递增 1”

使用我在 GIST 中提供的修改后的代码 - 我将非常感激。我对 ruby​​ 很陌生。(1 周)

最佳答案

根据目前编写的代码,CheckingAccount#withdraw 可以通过检查super 的返回值来判断取款是否成功。

例如:

def withdraw(n)
result = super
if result != 'Insufficient funds'
@number_of_withdrawals += 1
end
result
end

关于ruby - 使用 'super' 的 ruby​​ 中不合逻辑的 : circle of logic,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48995220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com