<p>条件により処理が変わるなんてことは日常茶飯事だろう。処理ではなくセットする値が異なる場合もある。<br />
「もしAが<span class="key">true</span>だったら処理1を、<span class="key">false</span>だったら処理2を実行する」なーんてやつだ。</p>
<p>信号機とその色をプログラムにしてみる。</p>
<p>信号機には、進んでよし/注意/止まれの3種の状態がある。これを定義してみる。</p>
<pre class="brush: delphi;">
type
  TSignal = (sgGo, sgWarning, sgCritical);</pre>
<p>それぞれの状態に対応する色を返す関数はこんな感じになるだろうか？</p>
<pre class="brush: delphi;">
function GetColor(ASignal: TSignal): TColor;
begin
  case ASignal of
    sgGo:
      Result := clBlue;
    sgWarning:
      Result := clYellow;
    sgCritical:
      Result := clRed;
  end;
end;</pre>
<p>case文で結構すっきり書けた。</p>