私はこのようなものを変換しようとしています:
if condition?
expression1 line 1
expression1 line 2
expression1 line 3
else
expression2 line 1
end
三項に対して、私の質問は、複数の行を1つの行の1つの式にどのように配置するかです。 Javaのようにセミコロンで区切りますか?このような?
condition? expression1 line 1; expression1 line 2; expression1 line 3 : expression2
式は括弧で囲む必要があります。
condition ? (expression1 line 1; expression1 line 2; expression1 line 3) : expression2
これにより、コードの可読性が低下することに注意してください。読みやすさを向上させるには、if
/else
ステートメントを使用することをお勧めします。 Ruby
コードを確認するときに使用したいリソースの1つは、 コミュニティスタイルガイド です。冒頭の段落で述べているように:
このRubyスタイルガイドは、現実世界のRubyプログラマーが、他の現実世界で維持できるコードを記述できるように、ベストプラクティスを推奨していますRubyプログラマー。
お役に立てれば
Rubyでは、改行をセミコロンに置き換えることが常に可能であるため、実際には、プログラム全体を1つの長い巨大な行に書き込むことができます。それが読みやすさと保守性に良いかどうかにかかわらず、私はそれをあなたに任せます。 (注:優先順位が一致しない場合は、グループ化のために括弧を挿入する必要がある場合があります。)条件式を1行で記述する方法は次のとおりです。ifcondition?次に、expression1行1;式1行2; expression1 line 3 else expression2 line 1 end
これは、複数の行で3項を表現できます。
condition ?
expression 1 :
expression 2
もちろん、複数の式にはセミコロンを使用する必要があります(角かっこは問題ありません)。
これをしないでください。 if
ステートメントに固執します。
三項演算子には、単一の命令ブロックが必要です。これは、括弧を使用して指示をグループ化することを意味します
condition = true
condition ? (puts("this"); puts("is"); puts("true")) : puts("this is false")
または開始/終了ブロック内。
condition = true
condition ? begin puts("this"); puts("is"); puts("true") end : puts("this is false")
結果を達成するための単純でクリーンな方法がないという事実は、三項演算子が実際には複数のステートメント用に設計されていないことを伝える必要があります。 ;)
この場合は使用しないでください。標準のif/elseを使用します。