如何在 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 中重命名变量的安全和合适的方式。

点赞
用户787480
用户787480

这是安全的(除非你稍后通过my.tab访问它),我想这是合适的,但它不会真正影响您的内存使用情况。在Lua中,所有可变类型都是引用类型。tab并未直接存储在my中;一个对它的引用存储在那里,同一张表的引用现在存储在myTab中。将旧名称设置为nil会略微减小内存使用量,因为my将有一个更少的哈希表条目,并且它可能(尽管可能不会)导致释放字符串值“tab”,但已经有两个对该表的引用并不会导致您拥有两个表的副本。

顺便说一下,更合适的做法是将myTab声明为local,因为这样它就不需要在全局表中查找,而且不太可能被意外泄漏。虽然不是必需的。

2019-07-05 10:53:34