lua - 如何通过引用分配lua变量

标签 lua

如何通过 Lua 中的引用将变量分配给另一个变量?

例如:想要做相当于“a = b”的事情,其中​​ a 将是指向 b 的指针

背景:
有一个案例,我实际上有这样的事情:

local a,b,c,d,e,f,g   -- lots of variables

if answer == 1 then
  -- do stuff with a
elsif answer == 1 then
  -- do stuff with b
.
.
.

附注。例如,在下面很明显 b=a 是按值计算的。注意:我正在使用 Corona SDK。
a = 1
b = a
a = 2
print ("a/b:", a, b)

-- OUTPUT: a/b: 2   1

最佳答案

编辑:关于你澄清的帖子和例子,在 Lua 中没有你想要的引用类型。您希望一个变量引用另一个变量。在 Lua 中,变量只是值的名称。就是这样。

以下工作是因为 b = a离开两个ab引用相同的表值:

a = { value = "Testing 1,2,3" }
b = a

-- b and a now refer to the same table
print(a.value) -- Testing 1,2,3
print(b.value) -- Testing 1,2,3

a = { value = "Duck" }

-- a now refers to a different table; b is unaffected
print(a.value) -- Duck
print(b.value) -- Testing 1,2,3

您可以将 Lua 中的所有变量赋值视为引用。

这在技术上适用于表、函数、协程和字符串。数字、 bool 值和 nil 也可能如此,因为它们是不可变类型,因此就您的程序而言,没有区别。

例如:
t = {}
b = true
s = "testing 1,2,3"
f = function() end

t2 = t -- t2 refers to the same table
t2.foo = "Donut"
print(t.foo) -- Donut

s2 = s -- s2 refers to the same string as s
f2 = f -- f2 refers to the same function as f
b2 = b -- b2 contains a copy of b's value, but since it's immutable there's no practical difference
-- so on and so forth --

简短版本:这只对可变类型有实际意义,在 Lua 中是 userdata 和 table。在这两种情况下,赋值都是复制引用,而不是值(即不是对象的克隆或副本,而是指针赋值)。

关于lua - 如何通过引用分配lua变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218330/

相关文章:

lua - Lua 语言中 switch 语句的替代方法是什么?

redis - 如何使用纯Redis以原子方式删除与模式匹配的数百万个键?

regex - 根据 url/nginx 设置内容处置

string - Pandoc过滤器pandoc.Para Lua函数中的字符转义

c - 执行应用程序时找不到 libuuid 库,尽管它可以完美编译

visual-studio - Lua 在 Visual Studio 2012 中?

java - 使用 luaj 将参数传递给 lua 函数

java - Luaj/Java : org. luaj.vm2.LuaError:加载模块循环或上一个错误

lua - 编写一个函数来打乱给定列表。确保所有排列的概率相同

lua - lua中的https请求