能否创建一个函数来创建带有参数名称的表?

我正在尝试创建一个函数,当我调用它时,可以传递一个名称,它会为我创建一个表。然后我想让它返回这个表,这样我就可以使用它。我的代码确实创建了一个表,但我似乎无法访问它。我认为Lua在使用参数命名时遇到了问题,但我不知道该怎么修复它。这是我想要实现的示例代码:

Tablemaker.lua:

Tabler = {}
Tabler.init = function (n,x,y,z)
--这里是我认为它出了问题的地方
    N = {}
    N.a = x
    N.b = y
    N.c = z
    --这里曾经有一个打印功能,所以我知道表被创建了。
    我留给你们处理吧。
    --不确定是否需要,但我在这里放了返回。
    返回n
End

Main.lua:

需求(“Tablemaker.lua”)

Tabler.init(meow,15,32,45--这里有一个额外的打印函数来验证我可以访问我的
表。当控制台尝试打印时,它给出了meow = nil。
我假设表没有正确命名为meow,而是命名为n。
然而,使用print(n.a)例如给出
n = nil也同样的结果。
print(meow.a ..“”.. meow.b ..“”.. meow.c)

就是这样。我正在尝试创建一个向量类(不确定为什么Lua没有一个),但即使没有向量,我也希望能够将名称传递到函数中。我该怎么办?

点赞
用户936986
用户936986

你可以在全局范围内创建命名表格的函数,但是为什么你需要呢?只需要将其返回并分配给你想要的任何东西,无论是全局的还是本地的或是其他的。无论如何,全局变量都是不好的。

Tabler = {}
Tabler.init = function(x, y, z)
    N = {}
    N.a = x
    N.b = y
    N.c = z
    return N
end

require("Tablemaker.lua")

local meow = Tabler.init(15, 32, 45)
print(meow.a .. " " .. meow.b .. " " .. meow.c)
2016-03-05 23:13:24