Module 卢阿';要求';复制台
我想做的是;使用一个模块创建两个不同的、独立的表,但似乎正在发生的是;如果我已经使用了'require',那么它会给我一个对前面require的引用,我真正想要的只是模块的值/副本。我无法使用“dofile”,因为1)。我需要使用相对路径和2)。我是在Corona中为android构建的,据我所知,“dofile”与.apk不兼容 这是我的密码 这是我的主要任务Module 卢阿';要求';复制台,module,lua,reference,require,Module,Lua,Reference,Require,我想做的是;使用一个模块创建两个不同的、独立的表,但似乎正在发生的是;如果我已经使用了'require',那么它会给我一个对前面require的引用,我真正想要的只是模块的值/副本。我无法使用“dofile”,因为1)。我需要使用相对路径和2)。我是在Corona中为android构建的,据我所知,“dofile”与.apk不兼容 这是我的密码 这是我的主要任务 foo = require('modules.myModule') bar = require('modules.myModule')
foo = require('modules.myModule')
bar = require('modules.myModule')
bar:changeName()
assert(foo.name ~= bar.name)
这在%cd%/modules/myModule中
local M = {
name = "hai",
changeName = function(self)
self.name = 'not_hai'
end
}
return M
您的模块可以返回
M
的构造函数,而不是M
您的模块:
return
function() -- this is a constructor of M
local M = {
name = "hai",
changeName = function(self)
self.name = 'not_hai'
end
}
return M
end
您的主要脚本:
foo = require('modules.myModule')()
bar = require('modules.myModule')()
bar:changeName()
assert(foo.name ~= bar.name)
您的模块可以返回
M
的构造函数,而不是M
您的模块:
return
function() -- this is a constructor of M
local M = {
name = "hai",
changeName = function(self)
self.name = 'not_hai'
end
}
return M
end
您的主要脚本:
foo = require('modules.myModule')()
bar = require('modules.myModule')()
bar:changeName()
assert(foo.name ~= bar.name)
作为变体,您可以使用此非必需功能:
function unrequire(m)
package.loaded[m] = nil
_G[m] = nil
end
foo = require('myModule')
unrequire('myModule')
bar = require('myModule')
作为变体,您可以使用此非必需功能:
function unrequire(m)
package.loaded[m] = nil
_G[m] = nil
end
foo = require('myModule')
unrequire('myModule')
bar = require('myModule')
这是我写模块的方式
local M = {}
function M.new()
local myTable = { name = "hai" }
myTable:changeName ()
self.name = 'not_hai'
end
return myTable
end
return M
用法:
这是我写模块的方式
local M = {}
function M.new()
local myTable = { name = "hai" }
myTable:changeName ()
self.name = 'not_hai'
end
return myTable
end
return M
用法: