Techioz Blog

1 つの関数で 2 つの条件を反転する

概要

これが私が達成したいことを説明するのに最適なタイトルかどうかはわかりませんが、基本的に 2 つの条件があります。

if current_file.early? && !required_file.early? do
...
end

if !current_file.early? && required_file.early? do
...
end

これを長く見すぎたように思いますが、これらは本質的に互いに逆であるため、これを単純化する簡単な方法があるかどうか知りたいだけです。ネストされた if を実行できることはわかっていますが、

current_file.early?
 !required_file.early? && do_something
 required_file.early? && do_something_else

でもそれは私が探しているものでもありません。もう少しエレガントなものがあれば探しています。

解決策

おそらく case ステートメント:

case [current_file.early?, required_file.early?]
when [true, false]
  "do something"
when [false, true]
  "do anything"
end