Anonymous
оооо ну да, я просто глупый спасибо)
Anonymous
путает немного эта неразбериха со строками-индексами
Snusmumriken
tbl = {x = 10, 'yo', 'hai', y = 35} = это всё равно что => tbl = {} tbl[1] = 'yo' -- потому что без ключей указывается массивная часть, где бы она ни была tb[2] = 'hai' tbl.x = 10 tbl["y"] = 35 -- для примера
Anonymous
так а table = { x} тогда что объявляет?
Snusmumriken
table = {} table[1] = x
Snusmumriken
Переменная какая-то. Если не объявлена - nil, то есть почти ничего не делает.
Anonymous
то есть это поле с очередным номерным индексом и переменной x, я понял
Anonymous
а еще, как ты так прикольно код выделяешь в сообщении?)
Snusmumriken
` - одинарные кавычки вокруг блока - однострочное выделение, тройные вокруг многострочного блока - многострочное.
Snusmumriken
Маркдаун телега, к сожалению, не тянет. Но двойными звёздочками, двойными подчёркиваниями и одинарными/ тройными апострофами можно делать кусочки форматирования.
Anonymous
оооооо спасибо)) и за индексы и за форматирование)
Snusmumriken
Карочи, я там вполне осваивал таблички через баловство и чтение доков.
Snusmumriken
Snusmumriken
Давай сам учись учиться самостоятельно ))
Anonymous
справедливо
Snusmumriken
Если понадобится ООП/метатаблицы - специально для таких как ТЫ я накатал статью с примерами
Snusmumriken
Ща найду
Anonymous
да, я уже почитал) правда, чтобы осознать там написанное, надо пробовать самому, пока не пригодилось
Snusmumriken
Ага
Snusmumriken
https://habrahabr.ru/post/346892/ Для тех кто не читал и не освоил - вперёд.
Anonymous
я где то это вроде как прочитал, но все же, если я положу в переменную табличку, переменная на самом деле станет ссылкой на табличку?
fgntfg
Да
Anonymous
Да
спасибо)
Anonymous
это потому что таблицы всегда анонимны ?
fgntfg
Таблица это просто облость памяти. Через имя таблицы ты оращаешься к этой облости
fgntfg
По сути у ссылки на область памяти может быть много имён
Anonymous
да, вот, оно, благодарю)
Anonymous
как и функции
Snusmumriken
Опять, да?
Snusmumriken
Катя, тебя забанить? : )
Andrei
Катя, тебя забанить? : )
звучит крайне интригующе)
Alexander
бань
fgntfg
ТОЛЬКО НЕ КАТЮ, НЕЕЕЕЕТ
fgntfg
Как же мы иначе узнаем как заработать не работая?
fgntfg
Ловить момент, чтоб обезьяна поймала банан
B
Как лучше организовать нечто такое? Разделить на несколько файлов или как то организовать по другому внутреннюю структуру. Что где было бы неплохо переписать?
Snusmumriken
Не в тот чат : )
Snusmumriken
Не, идея хендлера - неплоха. У меня, правда, есть что-то похожее, по сути - запуск love-проекта из произвольного файла. Типа, ищем файлик main.lua, поднимаясь по дереву папок.
B
там нету ничего связанного непосредственно с love в плане кода (типа love.load и таких вещей нет) там общий код на создание лов файла, или если нужно то и проекта. Просто как по мне много костылей, особенно с созданием архива и последующее изменение расширения, хотя немного переписал сам процесс создания и он стал немного быстрее в сравнении с первоначальным вариантом.
Snusmumriken
там нету ничего связанного непосредственно с love в плане кода (типа love.load и таких вещей нет) там общий код на создание лов файла, или если нужно то и проекта. Просто как по мне много костылей, особенно с созданием архива и последующее изменение расширения, хотя немного переписал сам процесс создания и он стал немного быстрее в сравнении с первоначальным вариантом.
Ну понятно всё, да : ) Карочи, внутренняя структура - по твоим пожеланиям, чесслово. Правда, если ты будешь запускать эту штуку с модулями в голом интерпретаторе - придётся дописывать в package.path путь до папки с текущим скриптом, иначе будет пытаться require'иться исключительно из директории с интерпретатором/LUA_PATH-переменной.
Snusmumriken
Вот тебе фишка на подумать: Если у тебя в проекте есть много подключаемых lua/C-библиотек из разных мест, то было бы неплохо рекурсивно парсить файлы сриптов на предмет подгружаемых модулей, смотреть, имеется ли в текущем проекте эта библиотека, и если её нет - пробегать по package.path/package.cpath и копировать модуль из первого найденного места в папку с проектом.
Snusmumriken
Типа, сбор либ с округи на упаковку. Потому что я, например, очень много что пишу в LUA_PATH, чтобы не морочиться с копированием либ туда-сюда каждый раз, и подгружаю одни и те же модули и в интерпретаторе, и в OpenResty и в love2d. А при выбросе приложения "в продакшн" - не факт что там был бы такой же набор библиотек с теми же переменными LUA_PATH/CPATH : )
B
ну, тут тогда должна быть структура проекта, что бы меньше было проблем с копированием и поиском в целом, ну наверно не то что бы очень сложно к реализации
Snusmumriken
А, не, тупо парсим файлы начиная с main.lua. Смотрим какие там есть require. Бежим по путям, ищем там эти подгружаемые файлы. Нашли в проекте? Отлично. Не нашли? Бежим по путям. И так - с каждым новым подгружаемым модулем.
Snusmumriken
Функция проверки файла на существование я тебе выдал : )
Snusmumriken
Кстати, вот тебе ещё прикольная штука. Скрипт для запуска луа-скриптов. Суть: запускаем его в lua-интерпретаторе, передавая первым аргументом путь до скрипта который мы хотим запустить.
Snusmumriken
Оно автоматом прописывает в пути адрес директории с запускаемым скриптом и через errorhandler запускает то что мы хотим. Основная задача скрипта - чтобы окошко терминала не закрывалось слишком быстро при ошибках : )
B
я пути кстати только так получить могу debug.getinfo в других случаях просто получаю путь не файла а корневище луа
Snusmumriken
Ну смотри. У тебя есть путь проекта? Или как ты планируешь использовать хендлер?
Snusmumriken
Ну, просто я обычно запускаю всякие такие штуки из консоли, типа: luajit /path/to/handler /path/to/project -action property -action2 property2
Snusmumriken
Это уже даёт твоему скрипту путь до проекта первым аргументом, от этого можно скакать дальше (куда угодно, если это связано с проектом).
Anonymous
А есть у кого нибудь установщик lua? А то там какие то исходники, которые надо через visual studio устанавливать, а я не умею, да и нет её у меня
Snusmumriken
Чего-чего? Установщик луа-чего?
Anonymous
Ну этого
Snusmumriken
ИНТЕРПРЕТАТОРА?
Anonymous
Который будет мой код lua запускать :D
Snusmumriken
На офсайте глянь бинари.
Anonymous
Я глядел, а чего с ними делать то
Snusmumriken
Там типа exe-шник. Чтобы запустить скрипт потом пишешь в консоль или в run: c:/bla-bla/lua.exe c:/scripts/script.lua и он типа запускает скрипт.
Anonymous
ооооо Спасибо, посмотрю ещё раз
Snusmumriken
Читай мануалы по работе с командной строкой, это - такие вещи, которым учатся даже совсем дурацкие админы трёх офисных компов, не то что "разработчики" : )
Anonymous
Хм, если офишал - это lua.org, то там нет рабочих ссылок под windows -_-
Anonymous
Ладно, дома разберусь Может косяк местной сети
Snusmumriken
Мммм
Snusmumriken
Там, конечно, линк на lua-users.org, но само направление есть. Я сам, правда, беру вот отсюда: http://luajit.org/download.html Всё то же самое (5.1), но в сто мильёнов раз быстрее )))
Anonymous
Дык я туда тыкал Кидает на люа юзерс и там уже не рабочие ссылки)
Snusmumriken
Рабочие. Например вот эта: [Lua v5.3.4] Lua interpreter compiled with TinyC — much smaller executable (64K). Passes all tests. http://www.aspisys.com/lua53.exe
Anonymous
Рабочие. Например вот эта: [Lua v5.3.4] Lua interpreter compiled with TinyC — much smaller executable (64K). Passes all tests. http://www.aspisys.com/lua53.exe
Ну, тогда я колхозник и заблудился в трёх соснах непонятно как Спасибо большое
Kukuzapa
вроде как под виндой zero brain можно использовать.
Kukuzapa
https://studio.zerobrane.com/
Anonymous
Кстати, кто-нибудь писал под tinyC compiler? Он реально работает? Хорошо бы на нем ассемблер поучить
Snusmumriken
Это обычный компилятор, но за счёт бешеной скорости там несколько странный вывод ошибок, дебажить чутка сложно. P.S. Луа компилится tcc.
Snusmumriken
http://lua-users.org/wiki/LuaBinaries
Anonymous
Понятно, спасибо
Snusmumriken
А ещё, tcc умеет работать интерпретатором сишки, это вообще очень мило. Правда, ошибки вылезают специфические.
Snusmumriken
Скриптовая сишка ещё никогда не была так близко. Но на самом деле оно просто очень быстро компилирует, так что кажется будто это скрипты.
Snusmumriken
Хех, но тут типа прямо таки СИШКА
Snusmumriken
Хотя на самом деле, luajit-ffi - почти то же самое, но только без макросов и ещё нескольких фич. И ещё можно писать на луа (это просто tcc + lua).
Anonymous
Скриптовая сишка это си-шелл