【发布时间】:2025-11-30 14:40:01
【问题描述】:
您好,我想了解为什么我的代码似乎可以以 if/else 形式工作,但似乎不适用于三元运算符。
对于我想要的真实价值,它会减少余额并传达我的信息。
以下是我尝试过的:
# With ternary operator. This doesn't work:
def withdraw(pin_number, amount)
puts pin_number == pin ? @balance -= amount "Withdrew #{amount}. New
balance $#{@balance}." : puts pin_error
end
# With if/else statement. This does work:
def withdraw(pin_number,amount)
if pin_number == @pin
@balance -= amount
puts "Withdrew #{amount}."
else
puts pin_error
end
end
~~
【问题讨论】:
-
if-else变体对我来说看起来不错。请问您为什么要使用三元组? -
这主要是为了我的理解。我对 ruby 很陌生,想了解一下三元以及如何将它与多个值一起使用。知道为什么三元似乎不起作用吗?是不是因为“真”部分有两个值?
-
确切地说,您必须用
;分隔表达式并将它们括在括号中,即(@balance -= amount ; puts "...")。但这会使您的代码难以阅读,应该避免。哦,在您的三元示例中还有一个额外的puts。 -
@Stefan 感谢您的回复和关于额外
puts的说明!
标签: ruby