为了方便使用,我想在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中的变量。
答案 0 :(得分:5)
这是安全的(除非以后您尝试通过my.tab
访问它),我认为它是正确的,但它不会真正影响您的内存使用。在Lua中,所有可变类型都是引用类型。 tab
不直接存储在my
中;对它的引用存储在此处,对同一表的引用现在存储在myTab
中。将旧名称设置为nil
有一个非常小的内存好处,因为my
会减少一个哈希表条目,并且可能(尽管可能不会)导致释放字符串值"tab"
,但是已经有两个对该表的引用并没有导致您拥有该表的两个副本。
顺便说一句,更合适的方法是将myTab
声明为local
,因为这样就不必在全局表中查找它了,因此不太可能被意外泄漏。不过不是强制性的。