Luaで擬似switch文を実装する

Luaにはswitch文に該当する構文がないので基本的にはifelseを使用して進めていく形になりますが、比較回数が増えれば増えるほど無駄が発生してしまいます。
そこで今回はLuaのテーブルを利用して簡単な擬似switch文を作ってみます。


まずはswitch文として使う変数を宣言します。
予期しない誤動作を防ぐためにローカル変数とした方が安全でしょう。

local switch = {}

次に、C言語のswitch文のcaseにあたる部分を実装していきます。
先ほどのテーブル型の変数に関数を代入しましょう。

switch[値]=function()
	文
end

Luaのテーブル型を利用した実装なので、値には文字列を使用する事も可能です。
文字列を使う場合はダブルクォーテーションでくくるのを忘れないようにしましょう。

最後にswitch文を動かす為に今回作成した関数を記述します。

switch[式]()

以上で、式の結果に応じて実行結果を分ける事ができます。

ここまでのコードを纏めると以下のようになります。

local switch={}
switch[値1]=function()
	文1
end
switch[値2]=function()
	文2
end
switch[式]()