require
型:function
code:Lua
require(modname)
table:
引数名 型 説明
modname string 読み込みたいモジュール名
requireの行う処理を下にLua風味な擬似コードで示す
code:Lua
function require(modname)
end
local mod
if(package.preloadmodname~=nil)then return mod
--Luaのローダーを探す
--本当はpackage.pathには複数のパスのデータが入りうる ;で区切られている
--?にmodnameが入る
elseif(<package.path:gsub("?",modname)が存在する>)then
mod=dofile(package.path:gsub("?",modname))
return mod
else
--Cのローダーを探す
-- -(ハイフン)までの文字は、-含め切り捨てて、.(ドット)は_(アンダースコア)に置換される
-- a.b-c.d は c_d になる
local c_loader_name=modname:match("%-?(.+)"):gsub("%.","_")
--package.cpathも同様複数パスが入れる
if(<package.cpath:gsub("?",modname)が存在する>)then
local mod=package.loadlib(
package.cpath:gsub("?",modname),
"luaopen_"..c_loader_name
)()
return mod
--オールインワンローダーを探す
else
-- 一番最初の.の直前までをファイル名にする a.b.cなら ~\a.dllを見に行く
if(<package.cpath:gsub("?",modname:match(".+%.?"))が存在する>)then --同上
local mod=package.loadlib(
package.cpath:gsub("?",modname),
"luaopen_"..modname:gsub("%.","_")
)()
return mod
end
end
end
end
関連項目