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