如何在Lua中重命名(或移动)变量?

Zac*_*Lee 2 lua

我想在Lua中重命名一些变量以便于使用。

我可以简单地使用不同的名称来创建别名,但是我担心会浪费一些内存。

在这种情况下,我可以简单地分配nil给旧变量吗?

这是我的示例代码:(尝试重命名my.tabmyTab

print(type(my.tab))
myTab = my.tab
my.tab = nil
print(type(my.tab))
print(type(myTab))
Run Code Online (Sandbox Code Playgroud)

结果:

table
nil
table
Run Code Online (Sandbox Code Playgroud)

尽管这种方法似乎可行,但我想问一下这是否是一种安全且正确的方法来重命名Lua中的变量。

Sne*_*tel 5

它是安全的(除非您以后再尝试通过访问它my.tab),我认为它是正确的,但是它不会真正影响您的内存使用。在Lua中,所有可变类型都是引用类型。tab没有直接存储在my; 对它的引用存储在此处,对同一表的引用现在存储在中myTab。将旧名称设置为nilin 有一个非常小的内存好处,my即将减少一个哈希表条目,并且可能(虽然可能不会)导致释放字符串值"tab",但是已经有两个对表的引用了不会导致您拥有该表的两个副本。

顺便说一句,更合适的方法是将声明myTablocal,因为这样一来,就不必在全局表中查找它了,并且不太可能被意外泄漏。不过不是强制性的。