Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lua

Войти
Регистрация
Восстановить пароль
 
Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 191
#1

Доступ к таблице по строке - Lua

31.08.2015, 00:23. Просмотров 423. Ответов 4
Метки нет (Все метки)

Есть код:
Код
IMAGE = {
	imgID = 0,
	content = {
		NPC = {}
	}
}

function IMAGE:new(className, path) 

end

function IMAGE:GetAmount(class) 
	return self.content[class].foo
end
IMAGE:new(NPC, "res/idle.png")
IMAGE:new(NPC, "res/dead.png")

Из с++ вызывается функция GetAmount(class). class - это название класса с++ в строковом виде. Я пытаюсь сделать функцию IMAGE:new. И вот какие результаты:
Код
--работает
function IMAGE:new(className, path) 
	local class = ""
	class = "NPC"
	self.content[class]["foo"] = 4
end

--не работает
function IMAGE:new(className, path) 
	local class = ""
	class = "NPC" + ""
	self.content[class]["foo"] = 4
end

--не работает
function IMAGE:new(className, path) 
	local class = ""
	class = className
	self.content[class]["foo"] = 4
end
Я уже думаю, что в lua мне нужно бы приведение типов...

А вот такой вариант почему-то работает:
Код
IMAGE = {
	imgID = 0,
	content = {
		NPC = {0,1,2}
	}
}

function IMAGE:new(class, path) 
	self.content[class][1] = 4
end

function IMAGE:GetAmount(class) 
	return self.content[class][1]
end
IMAGE:new(NPC, "res/idle.png")
IMAGE:new(NPC, "res/dead.png")
Что творит этот язык?? Как это сделать правильно?

Но этот код я писал, потому что основная задача не получалась. Вообще нужно, чтоб работало примерно так:

Код
IMAGE = {
	imgID = 0,
	content = { }
}

function IMAGE:new(className, path) 
	self.content[class][1] = self.content[class][1] + 1
	self.content[class][#class + 1] = self.imgID
	self.imgID = self.imgID + 1
end

function IMAGE:GetAmount(class) 
	return self.content[class][1]
end
IMAGE:new(NPC, "res/idle.png")
IMAGE:new(NPC, "res/dead.png")
IMAGE:new(Monster, "res/eat.png")
IMAGE:new(itd, "res/itp.png")
То есть чтоб при вызове IMAGE:new добавлось новое поле таблицы в content и далее уже в это поле добавлялись айдишники. Ну, я думаю, при решении первой проблемы автоматически рассосется и вторая

Добавлено через 8 минут
Аах да.. Под словом "работает", я имел в виду, что оно возвращает то число, которое я установил в функции new. На path вообще не обращайте внимания)

Добавлено через 3 часа 9 минут
Мда. В общем, я думал, что ключи в луа можно писать и без кавычек, а оказалось, что нельзя) От этого всё и косячилось. Хотя не представляю, почему работал тот кусок кода...
Тему можно закрывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2015, 00:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Доступ к таблице по строке (Lua):

доступ к таблице .xls с шапкой в начале - C# ASP.NET
есть след проблема. надо заполучить содержимое екселевкого файла. проблема в том, что первые строки в нём -- шапка с ячейками...

HtmlAgilityPack.dll, не получается получить доступ к таблице - C#
/// <summary>Получить информацию о документе включающую его тип</summary> public DocumentInfo SearchSign(string fileName) ...

Как получить доступ к таблице в .mdb-файле - C# ASP.NET
Не получается изменить данные в таблице Access, получается только извлечение данных. Подскажите, что не так?

Как ограничить доступ юзера к таблице только функцией (хранимкой)? - PostgreSQL
Есть функции на PL/pgSQL. Как заставить юзера делать запрос через нее, а не напрямую к таблицам. Попытка ограничить юзеру доступ к...

Как получить доступ к содержимому ячеек в таблице на стороне сервера? - Visual Basic .NET
Таблица (HTML) построена так: <% For i = 0 to N %> <TR> <TD><asp:TextBox id='txtMeavteah' runat='server'...

Открыть или закрыть юзерам доступ на редактирование полей в зависимости от значения галочки в таблице доступа - MS Access
Добрый день. Честно скажу, нашел похожие темы но разобраться в них не успеваю (там сложность кода огого), так как нужно, чтоб БД уже...

4
BozKurt
297 / 274 / 79
Регистрация: 06.05.2014
Сообщений: 861
Завершенные тесты: 1
31.08.2015, 13:08 #2
Defake, вообще-то строковые ключи можно писать без кавычек, но обращаясь к таблице через точку:
Код
tbl = {
    localVarible = 2
    --/ or ["localVarible"] = 2
}
--/ tbl["localVarible"] == tbl.localVarible
А почему работает/не работает - это от среды исполнения зависит. Lua из коробки такую запись поддерживает без проблем.
0
Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 191
02.09.2015, 06:53  [ТС] #3
BozKurt, если в функцию передается параметр (допустим, arg = "mama"), то tbl.arg не будет идентично tbl["mama"], а будет идентично tbl["arg"]. У меня работало так. lua 5.3.0. Дллку компилировал сам из исходников с офф сайта в визуал студии 2013
0
BozKurt
297 / 274 / 79
Регистрация: 06.05.2014
Сообщений: 861
Завершенные тесты: 1
02.09.2015, 13:29 #4
Defake, само собой!
arg - это же строковая переменная, поэтому:
Код
arg = "mama"
tbl = {
    arg = 1,
    mama = 2,
}

--/ tbl.arg == tbl["arg"] == 1
--/ tbl[arg] == tbl["mama"] == tbl.mama == 2
Прочитай про "сахар" о доступе к данным таблицы через точку на офф странице Lua - там всё предельно ясно.
0
Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 191
04.09.2015, 21:16  [ТС] #5
Упс. Я имел в виду, что mama без кавычек. Да собсно проблему-то я уже решил давно)
0
04.09.2015, 21:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2015, 21:16
Привет! Вот еще темы с ответами:

Выбор значения в таблице по строке и столбцу - MS Access
Подскажите пожалуйста, как мне написать в Access выражение или созлать запрос: чтобы при выборе в форме "Сотрудники", значения "Тариф"...

Как обратиться к конкретной строке в таблице бд? - C#
Здравствуйте. Создал небольшую программу, которая подключается к БД и выводит всю информацию из определённой таблицы. private void...

Как пробежатся по каждой строке во временной таблице? - SQL Server
Добрый день уважаемые форумчане, есть такая проблема. В хранимой процедуре вначале создаётся временная таблица и заполняется. В ней...

Доступ к определенным символам в строке - PHP
Например у меня есть файл, который хранит строки: Блаблабла 45 блаблабла, 20.11.2013 Блаблабла1 132 блаблабла1, 21.11.2013 и т.д. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru