モジュールを読み込むサンプルをメモとして残します。
モジュールを読み込むサンプル
自分で作ったモジュール(関数、クラスなど)を別ファイルで読み込むときのサンプルを残す。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;
コメント