Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 我可以使用_G避免两次查找吗?_Lua_Scope - Fatal编程技术网

Lua 我可以使用_G避免两次查找吗?

Lua 我可以使用_G避免两次查找吗?,lua,scope,Lua,Scope,我已经了解到,如果使用一些函数,如table.insert,lua将首先尝试在局部范围内查找变量,然后在全局范围内查找变量。我可以使用\u G.table.insert来绕过本地查找吗 这是luac-l的输出: 没有 main <main.lua:0,0> (7 instructions at 0x55581ae50c60) 0+ params, 4 slots, 1 upvalue, 1 local, 3 constants, 0 functions 1 [1] NEW

我已经了解到,如果使用一些函数,如
table.insert
,lua将首先尝试在局部范围内查找变量,然后在全局范围内查找变量。我可以使用
\u G.table.insert来绕过本地查找吗

这是luac-l的输出:
没有

main <main.lua:0,0> (7 instructions at 0x55581ae50c60)
0+ params, 4 slots, 1 upvalue, 1 local, 3 constants, 0 functions
    1   [1] NEWTABLE    0 0 0
    2   [2] GETTABUP    1 0 -1  ; _ENV "table"
    3   [2] GETTABLE    1 1 -2  ; "insert"
    4   [2] MOVE        2 0
    5   [2] LOADK       3 -3    ; 5
    6   [2] CALL        1 3 1
    7   [2] RETURN      0 1
main(0x55581ae50c60处的7条指令)
0+参数,4个插槽,1个上限值,1个本地值,3个常量,0个函数
1[1]新表0
2[2]gettabup10-1_环境“表格”
3[2]可获取1-2;“插入”
4[2]移动2 0
5[2]荷载K 3-3;5.
6[2]致电1 3 1
7[2]返回0 1

main <main.lua:0,0> (8 instructions at 0x5562b3d6dc60)
0+ params, 4 slots, 1 upvalue, 1 local, 4 constants, 0 functions
    1   [1] NEWTABLE    0 0 0
    2   [2] GETTABUP    1 0 -1  ; _ENV "_G"
    3   [2] GETTABLE    1 1 -2  ; "table"
    4   [2] GETTABLE    1 1 -3  ; "insert"
    5   [2] MOVE        2 0
    6   [2] LOADK       3 -4    ; 5
    7   [2] CALL        1 3 1
    8   [2] RETURN      0 1
main(0x5562b3d6dc60处的8条指令)
0+参数,4个插槽,1个上限值,1个本地,4个常量,0个函数
1[1]新表0
2[2]gettabup10-1_环境「
3[2]可获取1-2;“表格”
4[2]可获取的1 1-3;“插入”
5[2]移动2 0
6[2]荷载K 3-4;5.
7[2]致电1 3 1
8[2]返回0 1

我不确定这些数字是什么意思。

\u G
不是保留的,从编译器输出中可以看出,使用它可能会更糟糕。我认为用
\u G
来做会更慢。

\u G
不是保留的,从编译器输出中可以看出,用它可能会更糟。我认为使用
\u G
进行测试更慢。

检查测试脚本上
luac-l
的输出。@lhf它告诉我它从
\u ENV
获取
表,但它也表示对于
\u G
。我读到它在调用全局变量时会进行更多的查找,所以我认为如果保留了
\u G
,那么它只会进行一次查找。是否正确?
\u G
未保留。你想达到什么目的?什么都没有,那就别管了。我是基于2个查找的,他们说有2个查找是不好的。我还读到,
\u G
是由SO上的语言保留的。另请参见。检查测试脚本上
luac-l
的输出。@lhf它告诉我它从
\u ENV
获取
,但它也表示对于
\u G
。我读到它在调用全局变量时会进行更多的查找,所以我认为如果保留了
\u G
,那么它只会进行一次查找。是否正确?
\u G
未保留。你想达到什么目的?什么都没有,那就别管了。我是基于2个查找的,他们说有2个查找是不好的。我还读到,SO上的语言保留了
\u G
。另请参阅。