require/module

全然使ったことないんですけど、いろんな人のLuaソース見てると結構使ってたりするので調べた。


モジュール名.lua
module("モジュール名",package.seeall)


ってやると名前空間みたいな感じで"モジュール名"のテーブルがグローバルに追加されてスコープもモジュールローカルになるつうことでしょうか。
そのままだとグローバルテーブルが見れなくなってしまうのでpackage.seeallを指定すると。


requireするとmoduleで定義した奴とかCとか関係なくテーブルに追加してインポートする的な感じ?テーブル作ってそこにdo_fileするみたいなことっすかね。
DLLも使えるらしい。


前はわざわざファイル名と同名のテーブル自前で用意してたけどそんなことしなくてもいいのか。
でもこれDLLの仕組みが無い環境でちゃんとうごくんかな。


http://pc11.2ch.net/test/read.cgi/tech/1160799232/705-708
なんかさらに作ったモジュールの中でmathとかtableとかやっちゃうと色々まずくなるらしいんだけど。勝手にテーブルに追加されちゃうから起きる問題?よくわからんね。



環境書き換えられちゃうのとか気にしながらやるのはちょっといやだけど、今度Lua使う機会があれば試してみようと思った。