2013-08-23 25 views

回答

4

根據定義,函數中使用的所有外部局部變量均計爲upvalues。 如前所述,在Lua 5.2中,如果函數使用全局變量,那麼對於環境也有一個隱藏價值。

您可能需要閱讀luac -l -l爲您的代碼生成的字節碼。

您可能會困惑的是正文fB的定義。回想一下, function fB() print(b) end只是糖fB = function() print(b) end。當你這樣做時,很顯然b正在fA中使用,並且您正在分配給全局變量fB。因此你可以在Lua 5.2中得到fA的3個upvalues。 (使用print也意味着fA使用全局變量。)如果您使用local function fB ...並刪除print,則會看到fA在5.1和5.2中使用了2個upvalues。

2

它的實現已定義;它可能是一兩個。或三個(環境價值最高的一個)。你不知道,你應該從來沒有必須在意。