*Luaリファレンス 要注意点 ~モジュール作成~ [#v6817fc2]

**モジュールの作成 [#qc83d44d]
***module ("モジュール名", package.seeall) [#iee8347c]
>module 化すると、モジュールファイルの中では、グローバル変数が使えなくなってしまうので、~
それを使えるようにするために package.seeall がある。~
事実上第2引数には、package.seeall 以外は指定出来ない。~
~
モジュール名.lua というファイルに作るのが良い。~
~
このモジュールには、''_M, _NAME, _PACKAGE'' にそれぞれ、モジュールテーブル、モジュール名、パッケージ名が格納される。

**モジュールのロード [#eb7ed234]
***require [#r747826d]
>~
#sh(csharp){{

local m = require "io"
m.write("hello world\n")

for w in pairs(m) do
    print(w)
end
}}
のような形となる。

**ジュールがロード済 [#x2be709b]
>package.loaded( ) で判定可能。(有効な値[通常テーブルのアドレス])が入っている。~
たとえば、~
#sh(csharp){{
package.loaded["io"]
}}


**パスの検索(Luaライブラリ) [#b63cc2e4]
>たとえば、
#sh(csharp){{
require "sql"
}}
と書いた場合、

--''sql''
--''sql.lua''
--''c:\windows\sql''
--''/usr/local/lua/sql/sql.lua''

>の順番で検索する。

**パスの検索(Cライブラリ) [#b63cc2e4]

>たとえば、
#sh(csharp){{
require "sql"
}}
と書いた場合、

--''.\?.dll''
--''C:\Program Files\Lua501\dll\?.dll''

>の順番で検索する。

**パスと環境変数 [#b19a56a7]
***環境変数LUA_PATH [#l029cb49]
>Luaモジュール用のパスは環境変数 LUA_PATH で設定が可能。~
その際には、LUAのデフォルトのパスは「;;」で付け加えることが可能
***環境変数LUA_CPATH [#ta2d4531]
>Cモジュール用のパスは環境変数 LUA_CPATH で設定が可能。~
その際には、LUAのC系検索デフォルトのパスは「;;」で付け加えることが可能。

**モジュール名とハイフン [#wb9b316a]
>モジュールの名前にハイフンが入っていると、そこまでは取り除かれる~
対象がC系APIをロードするためのものであれば、特殊な現象が起きる。
#sh(csharp){{
require "v1-mod"   ---> luaopen_mod
require "a-b"        ---> luaopen_b
}}

**サブモジュール [#g6518bef]
>~
#sh(csharp){{
require "mod.sub"
}}

>luaでは、''modディレクトリのsub.lua ファイル''~
''C系ライブラリの場合は、というファイルのluaopen_mod_sub''に紐付けされる。~
''メインのモジュールをロードしたからといって、そのディレクトリ下にあるサブモジュールが勝手にロードされるといったことはない。''
''メインのモジュールをロードしたからといって、~
そのディレクトリ下にあるサブモジュールが勝手にロードされるといったことはない。''~
ちゃんと自分で全部呼び出すこと。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS