Difference between revisions of "TsT Module definition"

(source tag)
m (Added link to module discussion.)
 
(One intermediate revision by one other user not shown)
Line 6: Line 6:
  
 
There is different way to do.
 
There is different way to do.
In lua 5.1, a module() function exists : Please do not use it. It will be deprecated in next version. See this discuss for detail TODO:link
+
In lua 5.1, a module() function exists : Please do not use it. It will be deprecated in next version. [http://lua-users.org/wiki/LuaModuleFunctionCritiqued See this discuss for details.]
  
 +
 +
== simple module definition ==
  
 
A "private"(?) module (not affecting the global environment)
 
A "private"(?) module (not affecting the global environment)
Line 70: Line 72:
 
mymod.bar()
 
mymod.bar()
 
</source>
 
</source>
 +
 +
 +
== more complicated module definition ==
 +
 +
<source lang="lua">
 +
local M = {} -- module namespace
 +
local func = {}
 +
 +
local function blah()
 +
 +
end
 +
 +
local function bar()
 +
 +
end
 +
 +
func.foo = blah
 +
func.bar = bar
 +
 +
M.func = func
 +
 +
M.foo = function(...) return func.foo(...) end
 +
M.bar = function(...) return func.bar(...) end
 +
 +
return M
 +
</source>
 +
 +
TODO: take sample from luajail/lovejail project

Latest revision as of 21:19, 6 April 2012

How to define a LÖVE module ?

Exactly like a LUA module.

How to define a LUA module ?

There is different way to do. In lua 5.1, a module() function exists : Please do not use it. It will be deprecated in next version. See this discuss for details.


simple module definition

A "private"(?) module (not affecting the global environment)

in file "mymod.lua" :

local M = {}

local function blah()

end

local function bar()

end

M.foo = blah
M.bar = bar

return M

sample of use in main file :

local mymod = require("mymod")
mymod.blah()
mymod.bar()


or with global module

mymod = require("mymod")
mymod.blah()
mymod.bar()


variant 2 in file "mymod.lua" :

local M = {}

local function blah()

end

local function bar()

end

M.foo = blah
M.bar = bar

mymod = M -- create the global "mymod" variable

sample of use in main file :

require("mymod")
mymod.blah()
mymod.bar()


more complicated module definition

local M = {} -- module namespace
local func = {}

local function blah()

end

local function bar()

end

func.foo = blah
func.bar = bar

M.func = func

M.foo = function(...) return func.foo(...) end
M.bar = function(...) return func.bar(...) end

return M

TODO: take sample from luajail/lovejail project