2017-04-03 7 views
1

私がしようとしているのは、モジュールを使用して2つの別個の別々のテーブルを作成しますが、起こっていると思われることはあります。私がすでに '必要'を使用している場合は、以前のものを参照する必要があります。実際にはが値/モジュールのコピーです。 1)ので、私は 'dofile'を使用することはできません。私は相対パスと2)を使用する必要があります。私はアンドロイドのためにコロナでこれを構築しています。私は 'dofile'が.apkでうまく動作しないと理解しています。ルア '要求'テーブルを複製する

ここに私のコードです。

これは、これは%でcd%/モジュール/ MyModuleという

local M = { 
    name = "hai", 
    changeName = function(self) 
     self.name = 'not_hai' 
    end 
} 
return M 

答えて

3

にあなたのモジュールはM代わりのM


のコンストラクタを返すことができている私のmain.lua

foo = require('modules.myModule') 
bar = require('modules.myModule') 

bar:changeName() 

assert(foo.name ~= bar.name) 

です

モジュール:

return 
    function() -- this is a constructor of M 
     local M = { 
     name = "hai", 
     changeName = function(self) 
      self.name = 'not_hai' 
     end 
     } 
     return M 
    end 

あなたの主なスクリプト:あなたはこのunrequire機能を使用することができバリアントとして

foo = require('modules.myModule')() 
bar = require('modules.myModule')() 

bar:changeName() 

assert(foo.name ~= bar.name) 
1

function unrequire(m) 
    package.loaded[m] = nil 
    _G[m] = nil 
end 

foo = require('myModule') 
unrequire('myModule') 
bar = require('myModule') 
0

これは私が

local M = {} 

function M.new() 
    local myTable = { name = "hai" } 

    myTable:changeName() 
    self.name = 'not_hai' 
    end 

    return myTable 
end 

return M 

USAGモジュールを書く方法ですe:

local m = require('myModule') 

foo = m.new() 
bar = m.new() 

bar:changeName() 
関連する問題