【问题标题】:How to rename(or move) variable in Lua?如何在 Lua 中重命名(或移动)变量?
【发布时间】:2019-07-05 18:53:34
【问题描述】:

为了方便使用,我想重命名 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 中重命名变量的安全且正确的方式。

【问题讨论】:

    标签: lua


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多