嗨,我试图理解为什么我的代码似乎可以以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
~~
答案 0 :(得分:0)
由于三元运算符恰好是该运算符(运算符),因此您不能将其分为多个指令。
但是,使用块可以将多个指令“压缩”为单个表达式。
def my_withdraw(pin_number,amount)
puts (
pin_number == @pin ?
begin
@balance -= amount
"Withdrew #{amount}."
end :
pin_error
)
end
当然,这是完全难以理解的,我绝不建议您在现实世界中使用这种语法。但是为了科学起见,为什么不呢?
答案 1 :(得分:0)
;用于告诉Ruby,如果您将两个表达式放在同一行中,则这两个是不同的语句/表达式/行。
因此您的代码将是
def withdraw(pin_number, amount)
puts pin_number == pin ? ( @balance -= amount; "Withdrew #{amount}. New
balance $#{@balance}." ) : puts pin_error
end