おさらい - シンプルなイベントハンドラー
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 15/54。
チャレンジ
簡単事前に登録されたイベントを持ち、入力パラメータに基づいてそれらをトリガーするシンプルなイベントシステムを作成する関数 createEventSystem を記述してください。
ロジック:
createEventSystemの内部に、イベントを格納するための空のテーブルを作成しますeventNameとcallbackを受け取り、イベント名をキーとしてコールバックをイベントテーブルに保存するregister関数を定義しますeventNameとargを受け取り、イベントテーブルからコールバックを検索し、存在すればその引数で呼び出すtrigger関数を定義します- 以下の3つのイベントを事前に登録します:
"double": 数値を受け取り、それを2倍にして返します"square": 数値を受け取り、それを2乗して返します"increment": 数値を受け取り、それに1を足して返します
eventNameパラメータで指定されたイベントを、valueパラメータを使用してトリガーします- トリガーされたイベントの結果を返します。イベントが存在しない場合は
"Event not found"を返します
パラメータ:
eventName(string): トリガーするイベントの名前value(number): イベントのコールバックに渡す値
戻り値:
- コールバック関数の結果 (number)、またはイベントが存在しない場合は
"Event not found"(number|string)
自分で試してみよう
function createEventSystem(eventName, value)
-- ここにコードを記述してください
end