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}"
これは 3 項構文を超えていますが、柔軟性が向上します。
出力:
$ ruby test.rb 2
x = 2, y = two