lua言語は上から順番にソースを評価していくため、サブ関数を呼び出し側よりも上に書く必要があります。例えばこんなかんじ。
local function hoge1()
print("hoge!")
end
local function hoge2()
hoge1()
end
hoge2()
しかし、イベントドリブンなコードを書いていたりすると関数同士が呼び合ったりしてなかなか順番を揃えられないことがあります。そこで関数定義だけを事前に宣言して中身を後で記述する必要があるのですが、決まった記述形式がないため以下のように書いて対応するようです。
local hoge1, hoge2
hoge1 = function()
hoge2()
end
hoge2 = function()
print("hoge!")
end
hoge1()
ほほう、なるほどね。関数も変数のように扱えるってのは色々応用が効いて便利ですね。