Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 卢阿';要求';复制台_Module_Lua_Reference_Require - Fatal编程技术网

Module 卢阿';要求';复制台

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')

我想做的是;使用一个模块创建两个不同的、独立的表,但似乎正在发生的是;如果我已经使用了'require',那么它会给我一个对前面require的引用,我真正想要的只是模块的值/副本。我无法使用“dofile”,因为1)。我需要使用相对路径和2)。我是在Corona中为android构建的,据我所知,“dofile”与.apk不兼容

这是我的密码

这是我的主要任务

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
用法: