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

时间:2019-07-05 10:43:27

标签: lua

为了方便使用,我想在Lua中重命名一些变量。

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

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

这是我的示例代码:(尝试将my.tab重命名为myTab

print(type(my.tab))
myTab = my.tab
my.tab = nil
print(type(my.tab))
print(type(myTab))

结果:

table
nil
table

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

1 个答案:

答案 0 :(得分:5)

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

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