关于lua的getfenv研究

今天跟师傅请教了一下午,总算是把这个玩意搞透彻了

特写此文,以便记录。转载请注明出处。


f = 4

function a()

  f = 3

  print(getfenv(0).f, getfenv(1).f, getfenv(2).f, getfenv(3).f)

end

A = {}

setmetatable(A, {__index = _G})

setfenv(a, A)

function b()

f = 2

A.a()

end

B = {}

setmetatable(B, {__index = _G})

setfenv(b, B)

function c()

f = 1

B.b()

end

C = {}

setmetatable(C, {__index = _G})

setfenv(c, C)

c()

只有setfenv了环境。。getfenv才能生效。

留下只言片语: