How to calculate upvalues ​​in nested Lua functions?

Use lua code blocks like this:

local a, b
function fA ()
print(a)
function fB ()
print(b)
end
end

How many upvalues ​​does fA have, 1 or 2?

By definition, all external local variables used in the function are counted as upvalues.
As mentioned earlier, in Lua 5.2, if the function uses global variables, there is also a hidden environment upvalue.

You may want to use luac -l -l to read the words generated for the code Section code.

What may confuse you is the definition of fB in the fA system. Recall that the function fB()print(b)end is just the sugar of fB = function()print(b)end. When you do this, it is obvious that b is being used in fA, and you are assigning a global variable fB. Therefore, you get 3 up values ​​in Lua 5.2. (Using print also means that fA uses global variables.) If Use the native function fB… and delete print, you will see that fA uses 2 upvalues ​​in 5.1 and 5.2.

Use a lua code block like this:

local a, b
function fA ()
print(a)
function fB ()
print(b)
end
end

How many upvalues ​​does fA have, 1 or 2?

According to the definition, all external local variables used in the function are counted as upvalues.
As mentioned earlier, in Lua 5.2, if the function uses Global variables, there is also a hidden environment upvalue.

You may want to use luac -l -l to read the bytecode generated for the code.

What you are confused about is the definition of fB in the fA system. Recall that the function fB()print(b)end is just the sugar of fB = function()print(b)end. When you do this, it is clear that b is in fA Use, and you are assigning a global variable fB. Therefore, you get 3 up values ​​in Lua 5.2. (Using print also means that fA uses global variables.) If you use the local function fB… and delete print, you will see Until fA uses 2 upvalues ​​in 5.1 and 5.2.

WordPress database error: [Table 'yf99682.wp_s6mz6tyggq_comments' doesn't exist]
SELECT SQL_CALC_FOUND_ROWS wp_s6mz6tyggq_comments.comment_ID FROM wp_s6mz6tyggq_comments WHERE ( comment_approved = '1' ) AND comment_post_ID = 3268 ORDER BY wp_s6mz6tyggq_comments.comment_date_gmt ASC, wp_s6mz6tyggq_comments.comment_ID ASC

Leave a Comment

Your email address will not be published.