私は変数x
を持っています。値を2回確認せずにこのJavaの条件を表現する最も簡潔な方法
m()
x
が2つの可能な値のいずれかである場合にのみ呼び出してください。
m()
を呼び出すとき、その値がx
の値に依存する引数を渡します。
x
の値を複数回チェックしたり、m()
を1か所だけ呼び出すか(つまりif
ステートメントの複数の枝にはない)、Javaでこれを行う方法はありますか?
一つの解決策私は楽しまよ:
switch (x) {
case 1:
y = "foo";
break;
case 2:
y = "bar";
break;
default:
y = null;
break;
}
if (y != null) m(y);
しかし、私は助けるが、これはちょうど第2のチェックのために、「プロキシ」を追加することによって、この事実を曖昧に、二回x
をチェック技術的にで感じることができません。
(なぜ制約があるのかを明確にするために:コードを読むときは、ブランチ間で重複度が高いときに分岐するロジックを理解するのが苦労します。私はRuby、JS、および他の言語でうまく機能する習慣である、そのような複製を積極的にリファクタリングすることを好む;私は同じことをすることを学ぶことができると期待している私と他の人のためのJavaと簡単にコードを作るには、一目で理解する。)
'Map'を作成し、 '1'と' 2'の値を入力して 'map.get(x)'を使用します。 –
@ElliottFrischマップは、2つの別個の 'if'ステートメントでロジックを破るよりも本当に良い解決策ですか?それがたくさん起こった場合私は理解するだろうが、この場合の少量のためにあなたのソリューションは本当に面白いですか? – MadJlzz
あなたの最初の例はまったく機能しません.1と2の両方で同じ結果になります。 –