2017-03-22 4 views
1

私はこれを試してみますが失敗します。 __newindexは、キーが設定されていない場合にのみトリガされます。作業以下luaグローバル値がいつnilに設定されているか調べるには?

setmetatable(_G, { 
__newindex = function (table, key, value) 
print("key: ", key, "value: ", value) 
rawset(table, key, value) 
if key == "Config" then 
    print("value: ", value) 
    if value == nil then 
     error(debug.traceback()) 
    end 
end 
end}) 
+0

あなたはLuaの5.2+で別名 '_ENV'、グローバルテーブルのプロキシ・テーブルを設定する必要があります。 – lhf

+0

詳細を表示できますか? –

+1

プロキシの設定は、書き込み/読み取りイベントをキャプチャするために専用テーブルを使用することを意味します。実際のデータは他のテーブルに保存する必要があります。そうすることで、__newindexが常に起動されます。それを正確に行う方法は、データを整理する方法がたくさんあるため、ニーズに応じて異なります。 – Vlad

答えて

1

コード:

local m = {} 
local t = { 
    __newindex = function (table, key, value) 
     m[key] = value 
     if key == "Config" then 
      print("config value: ", value) 
     if value == nil then 
      error("Config is set to nil!!!!!!"..debug.traceback()) 
     end 
    end 
end, 
__index = m} 
setmetatable(_G, t) 

Config = Config or {} 
Config = nil 

enter image description here

関連する問題