Luaへの名前空間っぽいもの導入メモ

Stage1_God = {
	function func()
		log("func")
		wait(-1)
	end
	
	function main()
		log("main")
		func()
	end
}

動かない。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
によればテーブルコンストラクタの要素はexpであり、functionはexpであるが、"function <関数名>(<引数>)"の糖衣構文は全体でstatだから。

Stage1_God = {
	func = function()
		log("func")
		wait(-1)
	end
	
	main = function()
		log("main")
		func()
	end
}

動かない。

Stage1_God = {
	func = function()
		log("func")
		wait(-1)
	end
	
	main = function()
		log("main")
		Stage1_God.func()
	end
}

動かない。
テーブルコンストラクタ内ではテーブルコンストラクタ自体を参照することは出来ないし、テーブル名を省略して関数を呼ぶことも出来ない。

Stage1_God = {}

Stage1_God.func = function()
	log("func")
	wait(-1)
end
	
Stage1_God.main = function()
	log("main")
	Stage1_God.func()
end

動く。

Stage1_God = {}

Stage1_God.main = function()
	log("main")
	Stage1_God.func()
end

Stage1_God.func = function()
	log("func")
	wait(-1)
end

動く。
テーブルさえ参照できれば、スクリプトの読み込み時点でStage1_God.funcがnilだったとしても関数呼び出しの形で書ける。


結局のところ、Luaの糖衣構文ってやつは今回殆ど使えないようです。
なかなか書くのがめんどくさそうになってまいりました。