我真的不明白为什么这不能使用给定名称创建表。有人可以帮我澄清一下吗?
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
为什么它不在函数调用中使用给定的变量值?
答案 0 :(得分:2)
您的意思是tab[tabname]={}
而不是tab.tabname={}
。
tab.str
语法将.
之后的位视为字符串键而不是变量。
也不要使用table
作为表名。您隐藏了默认的table
库。
同样在createtable(foo, "first table")
,除非foo
变量已存在,等同于createtable(nil, "first table")
。您的意思是createtable("foo", "first table")
吗?