创建一个具有给定名称的表?

时间:2015-02-17 02:08:47

标签: lua

我真的不明白为什么这不能使用给定名称创建表。有人可以帮我澄清一下吗?

local table={}

local function createtable(tabname, propername)
    table.tabname={}
    table.tabname.propername=propername or "need a proper name"
end

createtable(foo, "first table")
createtable(bar, "second table")

for k,v in pairs(table) do
    print("table name: "..k)
end

输出:

table name: tabname

为什么它不在函数调用中使用给定的变量值?

1 个答案:

答案 0 :(得分:2)

您的意思是tab[tabname]={}而不是tab.tabname={}

tab.str语法将.之后的位视为字符串键而不是变量。

也不要使用table作为表名。您隐藏了默认的table库。

同样在createtable(foo, "first table"),除非foo变量已存在,等同于createtable(nil, "first table")。您的意思是createtable("foo", "first table")吗?