1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaでモジュールを使うためのいくつかの基本的なこと

2022-02-09 01:11:52

--水平線2本で1行のコメント、--[[プラス2本の[and]で複数行のコメントを示す--]]。

コピーコード コードは以下の通りです。
-- assuming that the file mod.lua reads
local M = {}

local function sayMyName()
  print('Hrunkner')
end

function M.sayHello()
  print('Why hello there')
  sayMyName()
end

return M

コピーコード コードは以下の通りです。
-- Another file can also use the functions of mod.lua.
local mod = require('mod') -- Run the file mod.lua.

-- require is the standard practice for including modules.
-- require is equivalent to: (for the case where it is not cached; join what follows)
local mod = (function ()
  <contents of mod.lua>
end)()
-- mod.lua is like a function body, so mod.lua's local variables are not visible to the outside world.

コピーコード コードは以下の通りです。
-- The following code is working because in mod.lua mod = M.
mod.sayHello() -- Says hello to Hrunkner.

コピーコード コードは以下の通りです。
-- This is wrong; sayMyName only exists in mod.lua at.
mod.sayMyName() -- error

コピーコード コードは以下の通りです。
-- The values returned by require are cached, so a file will only be run once, and
-- even if it is required multiple times.

-- assuming mod2.lua contains the code "print('Hi!')".
local a = require('mod2') -- print Hi!
local b = require('mod2') -- no more printing; a=b.

-- dofile is similar to require, except that it does not cache.
dofile('mod2') --> Hi!
dofile('mod2') --> Hi! (run again, different from require)

コピーコード コードは以下の通りです。
-- loadfile loads a lua file, but doesn't allow it.
f = loadfile('mod2') -- Calling f() runs mod2.lua.

コピーコード コードは以下の通りです。
-- loadstring is the string version of loadfile.
g = loadstring('print(343)') -- returns a function.
g() -- prints 343; nothing is printed until then.