[Lua] モジュールとチャンクの読込み

Lua
モジュールを読み込むサンプルをメモとして残します。  

モジュールを読み込むサンプル

自分で作ったモジュール(関数、クラスなど)を別ファイルで読み込むときのサンプルを残す。require, load, loadfile, dofileを使うことになると思われるが、ここではrequireとloadfileを使っている。loadを使う場合は、前段階で自力でファイルから読込んでloadにチャンクとして渡す必要がありそう。ちなみにチャンク(chunk)とは、ひとまとまりになったデータのことです。

参考: リンク

 

サンプルプログラム

必要に応じてファイルに保存してください。今回は、moduleTest.luaを置いたフォルダの下にhhhhフォルダを作って中に各モジュールを置いてテストしました。フォルダを変えたい場合は、プログラム内のpackage.pathの代入箇所を変更してください。
moduleTest.lua
--[[
    モジュールを読み込む
]]
--package.path 初期値は、環境変数 LUA_PATH_5_3 または環境変数 LUA_PATH の値
package.path = package.path..';./hhhh/?.lua'  -- 自分のパスを追加

-- 1. require テーブル内の関数を呼び出す
md01 = require("module01");
md01:print();

-- 2. loadfile モジュールファイルが一つの関数のイメージ
md02 = loadfile("module02.lua");
md02();

-- 3. load 文字列にチャンクを設定してloadに渡す
strChunk = [[
    function hoge()
        print("hoge().");
    end
    local a = 114;
    print('aaaaa'..a);
]];
chnk = load(strChunk);
chnk();

-- 4. loadfile ここがよくわからなかった場所。
md03 = loadfile("module03.lua");
local m3 = md03(); -- 一度実行するとコンパイルされるらしい
m3.aaaa();
module01.lua
local m = {};

function m.print()
    print("module01 print().");
end

return m;
module02.lua
local function printB()
    print("bbbb");
end

print("in module02.lua.");
printB();
module03.lua
local m = {};

function m.aaaa()
    print("m.aaaa().");
end

return m;
 

コメント

タイトルとURLをコピーしました