如果符合条件,此行代码会打印您的帐户余额:
p account.balance if num_account == account.num_account && agencia == account.agencia
如果不满足这些条件,我希望else
而不重复所有内容。你能帮我解决一下这段代码吗?
答案 0 :(得分:6)
if (num_account == account.num_account) && (agencia == account.agencia)
p account.balance
else
# here you go
end
答案 1 :(得分:1)
def valid_account?(account_number, agency)
account_number == account.num_account && agency == account.agencia
end
account_balance = if valid_account?(num_account, agencia)
account.balance
else
# here you go
end
puts account_balance # or whatever it is you want to do with that.
您的代码行不仅打印帐户余额,还以人类可读的形式表示。这意味着如果它表示为字符串,您将获得引号,如果它作为数组返回,您将得到方括号。 p
方法不是puts
的替代或缩短替代品。它的行为有所不同。
您可能想要从if语句中重构条件语句,并使更长的代码由有效的代码表示?并可能提供参数。更好的是,创建一个代表正在查询的帐户的对象。
看起来像这样:
def account=(account_number, agency)
@account_number, @agency = account_number, agency
end
def account_number
@account_number
end
def agency
@agency
end
def valid_account?
account_number == account.num_account && agency == account.agencia
end
然后你可以这样做:
puts(valid_account? ? account.balance : "Something else")
注意valid_account变得多么简单?并且您不需要括号(即使在条件语句中,由于&&
优先于==
。
可以通过执行以下操作来创建访问者或访问者:
attr_reader :account_number, :agency
然后,您可以删除上面定义agency
和account_number
方法的6行代码,只留下account=
方法和valid_account?
方法。
我不确定这是否是提出这个问题的最佳位置,因为看起来Code Review可能是一个更好的地方。因为这感觉就像代码审查。
没有代码经过测试,仅提供说明。如果它适合你,那么这是一个加号。还有一些名字可能已从非英语改为英语,但我试着小心不要破坏功能。
答案 2 :(得分:-2)
p num_account == account.num_account && agencia == account.agencia ? account.balance : something_else