<p>しかし、配列を利用するともっとすっきりと書ける。</p>
<p>各状態に対応するに青/黄/赤の色を配列で定義する。</p>
<pre class="brush: delphi;">
const
  SignalColors: array[TSignal] of TColor = (clBlue, clYellow, clRed);
</pre>
<p>そして、この配列を利用して先ほどの関数を書き直してみる。</p>
<pre class="brush: delphi;">
function GetColor(ASignal: TSignal): TColor;
begin
  Result := SignalColors[ASignal];
end;
</pre>
<p>処理部分が1行で書けた。すっきり書けた以外にもメリットがある。<br />
列挙型の状態部分と配列の色部分を固めて書くとどの状態がどの色なのか非常にわかりやすい。修正もかなり楽だ。状態定義を増やす際に色の配列を加えるだけでよい。</p>
<p>実際の現場ではこれだけでは終わらないが、結構使える場面も多いかと思う。是非試して欲しい。</p>