【问题标题】:How can I get a reference of a table index?(lua)如何获得表索引的引用?(lua)
【发布时间】:2019-03-16 21:20:12
【问题描述】:

我想获得对表格中某些内容的引用,但是当我尝试时:

myReferences[x] = table[i]

我复制值。 我尝试在表之间使用变量:

local myReference = table[i]
myReferences[x] = myReference

但这也不起作用

提前致谢:)

【问题讨论】:

  • 你真正想做什么?
  • 这个问题应该是不可能的,因为 Lua 是严格按引用传递的(至少在语义上,而不是在幕后)。此外,如果值是 nil、布尔值、数字或字符串,则它是不可变的,因此复制与引用无论如何都没有区别。如果 Vlad 猜对了,您正在尝试获取 C++ 样式的引用,那么 Lua 就没有该功能。

标签: lua coronasdk love2d luajit entity-component-system


【解决方案1】:

Lua 中没有“引用”的东西。当您分配某些东西时 - 只会将新值绑定到变量或表的元素。

如果你需要一个表的元素的引用,你需要把表本身和引用索引的值存储在一起。那对将是您的等效参考。为方便起见,它可能被包装在某种功能对象中,但本质上它是同一对。

但正如 cmets 中所述,您可能正在尝试以 c++-ish 方式解决一些其他任务,因此您最好解释一下您要实现的目标。

【讨论】:

  • There is no "reference" thing in Lua。实际上,Lua 中有一个“引用”的东西。它通常被称为“upvalue” :-) Upvalue 是对基于堆的变量的引用。不幸的是,Lua 中确实不存在对某些内部元素(例如表中的值)的引用。
  • @EgorSkriptunoff,对,upvalue 正在引用另一个变量。谢谢纠正:)
猜你喜欢
  • 2017-10-29
  • 2021-03-11
  • 2015-07-11
  • 2015-10-21
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
相关资源
最近更新 更多