2015-02-17 5 views
0

Я действительно не понимаю, почему это не создает таблицу с использованием данного имени. Может кто-то помочь прояснить это для меня?Создать таблицу с заданным именем?

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 

Почему не использовать данную переменную значение в вызове функции?

ответ

2

Вы имеете в виду tab[tabname]={} не tab.tabname={}.

Синтаксис tab.str обрабатывает бит после . как строковый ключ, а не переменную.

Также не используйте table в качестве имени таблицы. Вы затеняете библиотеку по умолчанию table.

Также в createtable(foo, "first table"), если переменная foo уже существует, что эквивалентно createtable(nil, "first table"). Возможно, вы имели в виду createtable("foo", "first table")?

+0

Ой, сейчас он работает. Клянусь, я попробовал это раньше, но он все же дал ошибку «попытаться вызвать нулевое значение». Наверное, я не изменил строку, которая ссылалась на значения этой таблицы. И да, я никогда не использую ключ «стол». Я просто дал ему общее название. Приветствия, бутон. – mouse

Смежные вопросы