lua moduleのグローバル変数への影響

1655 ワード

今週ずっとluaを研究して、この間ちょうど1つの問題を解決して、moduleがグローバル変数に対する影響で、luaに対してまだ系統的に深く理解していないため、この問題は私の半日の時間を振り回して、大体私はメインファイルの中の1つのモジュールファイルで1つのAAAグローバル変数を宣言して、それからモジュールファイルの中でこのAAA変数を修正して、さらに変数BBBを追加して、このモジュールファイルを実行した後、AAAとBBBの値を再度表示して、BBBの値を発見した時nil、くだらないことは多く言わないで、コードをつけましょう
main.lua
 
require "a"
print("*********************".."*****************") --     ..   
print(AAA[1])
print(AAA[2])
print(BBB[1])
print(BBB[2])
print("**************************************")
b= require "b"
b.run()
print(AAA[1])
print(AAA[2])
print(BBB[1])
print(BBB[2])
print("**************************************")

a.luaファイル
AAA = {}
AAA[1] = 10
BBB = {}

 
module(..., package.seeall)
function run()
    print("**************************************")
    AAA[2] = 20
    print(AAA[1])
    print(AAA[2])
    BBB= AAA
    print(BBB[1])
    print(BBB[2])
    print("**************************************")
    return 0
end

lua mainを実行します.lua後、結果は以下の通りです.
**************************************
10
nil
nil
nil
**************************************
**************************************
10
20
10
20
**************************************
10
20
nil
nil
**************************************

みんなは結果を見たでしょう、具体的な原理はまだはっきりしていないで、後で補充しましょう