我想if...elsif
使用三元语法编写语句。我可以ARGV[1]
在这个语句中添加另一个检查吗?
test-expression ? if-true-expression : if-false-expression
ARGV[1] == "home" ? (installabra) : (puts menuInstall)
- 这行得通
我想if...elsif
使用三元语法编写语句。我可以ARGV[1]
在这个语句中添加另一个检查吗?
test-expression ? if-true-expression : if-false-expression
ARGV[1] == "home" ? (installabra) : (puts menuInstall)
- 这行得通
任何你可以做的事if...elsif...else...end
if cond1
stmt1
elsif cond2
stmt2
elseif cond3
stmt3
else
stmt4
end
您可以使用嵌套的三元运算符:
cond1 ? stmt1 : (cond2 ? stmt2 : (cond3 ? stmt3 : stmt4)))
或者更不清晰,省略括号:
cond1 ? stmt1 : cond2 ? stmt2 : cond3 ? stmt3 : stmt4
但请考虑哪些代码更清晰、更易于维护。
在您的问题中,您询问是否可以ARGV[1]
在嵌套条件中进行另一个测试。如果您的条件总是在测试ARGV[1]
相等性,那么 case 语句更好:
case ARGV[1]
when 'home'
installabra
when 'away'
goaway
else
puts menuInstall
end
不是 100% 我完全理解了你的问题....以下是否达到了你所追求的目标?
x = ARGV[0].to_i
y = if x == 1 then "one"
elsif x == 2 then "two"
else "unknown"
end
puts "x = #{x}, y = #{y}"
这超越了三元语法,但为您提供了更大的灵活性。
输出:
$ ruby test.rb 2
x = 2, y = two