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