Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lua
Войти
Регистрация
Восстановить пароль
 
Tyritti
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 20
1

Таблица с параметрами

08.11.2014, 20:04. Просмотров 492. Ответов 0
Метки нет (Все метки)

Задача: В таблице (tab) необходимо создать несколько массивов по шаблонному массиву (array) с его параметрами имени и позиции (name, x, y). Моя проблема заключается в том, что после создания массивов (tab[i]) их значения напрямую зависят от шаблонного массива (array) без возможности их изменения т.к. они всегда равны значениям array.name, array.x, array.y.
Код программы:
Код
tab = {}
array = {}
	array.name = "Enemy"
	array.x = 100
	array.y = 100
for i = 1, 5 do
	table.insert(tab, i, array)
end

for i = 1, #tab do
tab[i].name = "Enemy "..i
tab[i].x = 100 + 10 * i
tab[i].y = 100 + 10 * i
print(tab[i].name..", "..tab[i].x..", "..tab[i].y.." RIGHT ANSWER") -- Верный ответ
array.name = "Another name "..i
array.x = 110
array.y = 110
print(tab[i].name..", "..tab[i].x..", "..tab[i].y.." WRONG ANSWER\n") -- Неверный ответ
end
io.read()
Добавлено через 19 часов 27 минут
Немного разобрался, вся проблема в том, что таблица вместо того, чтобы копировать параметры массива создаёт указатель на него, как это можно изменить?

Добавлено через 3 часа 25 минут
Один знающий человек помог и я наконец разобрался, необходимо каждый раз создавать новый массив, тогда при изменении родительского массива будет меняться только последний созданный массив. Прикрепляю свой код решения, вдруг кому понадобится:
Код
function array_create(i)
	array = {
	name = "Enemy "..i,
	x = 100 + 10 * i,
	y = 100 + 10 * i,
	}
end

tab = {}
for i = 1, 5 do
	array_create(i)
	table.insert(tab, i, array)
end

array.name = "no name"

for i = 1, #tab do
	print("tab["..i.."].name = "..tab[i].name..", tab["..i.."].x = "..tab[i].x..", tab["..i.."].y = "..tab[i].y)
end
io.read()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2014, 20:04
Ответы с готовыми решениями:

Регулярное выражение для парсинга строки с параметрами
Никак не получается написать регулярное выражение которое разделяло бы например...

Двухуровневая таблица. Найти все возможные комбинации
Помогите написать функцию, возвращающую tRet. Пример: t = {{a1, b1}, {a2,...

Таблица с параметрами
Здравствуйте, знающие люди) Есть таблица с параметрами шкафов: Порядковый...

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей...

Реализовать функции с опциональными параметрами и именованными параметрами
Нужно задачу написать, про ref и out ничего пока не знаю, не понимаю их.. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2014, 20:04

Подпрограммы с типизированными параметрами -значениями и параметрами-переменными
Помогите пожалуйста). С помощью подпрограммы, определяющей принадлежность...

Подпрограммы с типизированными параметрами -значениями и параметрами-переменными
С помощью подпрограммы подсчитать сумму элементов главной диагонали для матриц...

Производный класс Самоорганизующаяся таблица должен наследовать свойства и методы класса Таблица
класс таблица, содержащий целые числа Обьект класса таблица должен...


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

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

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