ユーザ用ツール

サイト用ツール


lua:switch

概要

  • LuaにはSwitch構文がない。
  • だが、TIC-80だと必須となるメイン関数(Callback)が存在しており、これを利用する必要がある。
  • つまりツリー構造としなければならないが、毎回if分岐を使うのも面倒。
  • そこで、switch構文っぽく実装ができれば記述を大きくしなくて済む。また改造も局所的で済む。

TIC-80での実装

  • 元実装とそれほど変わりない
local StateId = {
  Idle = 1,
  Run = 2,
  Attack = 3,
}

local state=2

function SwitchCaseIdle(arg)
  return 1+arg*10
end

function SwitchCaseRun(arg)
  return 2+arg*10
end

function SwitchCaseAttack(arg)
  return 3+arg*10
end

-- switchぽい関数分岐
function SwitchMain(stateId, arg)
  local switchCase={}
  switchCase[StateId.Idle] = SwitchCaseIdle
  switchCase[StateId.Run] = SwitchCaseRun
  switchCase[StateId.Attack] = SwitchCaseAttack
  switchCase[stateId](arg)
end
function TIC()
  print SwitchMain(state,1)
end
lua/switch.txt · 最終更新: by machiaworx