[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Моддинг » 5.2. Вопросы по скриптингу » Вопросы по скриптам
Вопросы по скриптам
Проверенные
Сообщений: 2
Реп: 0
Здраствуйте. Я недавно начал изучать Lua и у меня появились вопросы:
Что такое .(точка), :(двоеточие) и self. self еще бывает двух видов: 1. - self. и self: Чем они отличаются?
Объясните только поподробнее, а то вдруг я не пойму.
 
Проверенные
Сообщений: 8
Реп: 1
точка значит что ты обращяешся к массиву(таблице)
например:
table = {}-- новая таблица терь туда можно ложить переменные , функции etc.
table.var = 5 -- мы положили переменную var в таблицу table со значением 5
var2 = table.var --var2 будет равен пяти поскольку table.тоже равен пяти
table.table2 = {} -- таблицы также можно ложить друг в друга
table.table2.var = 3 -- переменная var в таблице table2 которая в свою очередь в таблице table
лучший пример таблиц - это папки и файлы представь что таблицы - это папки а всё остальное ето файлы
например:
newDir = {} -- создали новою папку
newDir.g = function() end -- создали в папке newDir функцыю "g" которая ничего не делает
newDir.newDir = {} -- создали папку newDir в папке newDir в файловой системе это не выдаст ошыбки
также как и в файловой системе могут существовать две вещи с одинаковым именем если находятся в разных папках
например:
newDir = {}
newDir2 = {}
newDir.var = 5
newDir2.var = 3
здесь две переменные с одинаковым именем но они в разных папках(не забывайте что это не папки а таблицы)
var = newDir.var + newDir2.var --var будет равен восьми так как newDir.var = 5 а newDir2.var = 3
также как и всё в Lua таблицы тоже могут быть локальными
из таблиц можно передавать информацию из друг в друга
table = {}
table2 = {}
table.var = 3
table2.var = table.var
всё очень просто
теперь про двоеточие но сам на практике не когда не использовал по этому если что то не то скажу я не виноват
t = {}
t:func() тоже самое что и
t.func(t)
в сторчке t:func() в фукции func()
есть таблица self
t:func()
self.var = 5
end
self - это по сути t но это сложнее понять
а если написать GG:func()
то self - это GG
но всё не так просто(сам ещё изучяю)
таблица к которой применяю двоеточие должна быть создана специальным образом
то есть это по сути та же таблица но она связана с таблицой через которую она создана
пример:
img = graphics.newImage("img.png")
img:draw()
здесь используется userdata но и для таблиц то же самое

Добавлено (15.02.2013, 16:23)
---------------------------------------------
self и thring тоже самое но self обрящяется к скрипту а thring к обекту(таблице)
[quote]
var2 = table.var --var2 будет равен пяти поскольку table.тоже равен пяти
[/quote]
там где написал "table.тоже равен пяти"я недаписал var
"table.var тоже равен пяти"

 
Форум » Моддинг » 5.2. Вопросы по скриптингу » Вопросы по скриптам
  • Страница 1 из 1
  • 1
Поиск: