Roma
Да фиг с ним с наследованием, по вопросу оно и не нужно нам ) Смотри, что у нас есть: - идея фикс протокола countable, со свойством count: Int - три таблицы. не суть какие они и зачем, но у двух есть свойство "count", а в третьей его нет. причем первая и вторая в остальном вообще про разное. - задача чтобы нельзя было вставить куда-то свойством эту таблицы если они не имеет свойства count (не поддерживают countable) и как-то это удобно описать на lua. Попытка вставить третью таблицу выставит nil. - задача чтобы эти две таблицы с count лежали в массиве и была уверенность что они туда попали так как поддерживают countable. и вытаскивая их оттуда мы работали с таблицей которая только лишь с этим свойством, а осатльное где-то зашито внутрь.
Roma
Т.е. по факту нам видимо нужны: - сеттеры которые делают проверку на наличие свойств и типов - геттеры которые возвращают обертку с интерфейсом протокола и в метатаблице держат ссылку на оригинал и дергают его по мере вызова методов протокола
Snusmumriken
Да, попытка придти к балансу. Чтобы и криво не было, и гибкость была.
Чтобы криво не было, достаточно не писать криво )) Процедурным проганьем можно писать ровно и чисто. Сложно но можно. ООП можно сделать ровным, хоть это и набор ограничений "для бобиков" над процедурами. Почти что угодно можно сделать ровным, вопрос только в том, будут ли абузить правила это или нет (будут, инфа 100%). И задачей становится ввод таких ограничений, чтобы абузить было НЕЛЬЗЯ СОВСЕМ, но при этом была "гибкость". Совсем в идеале, чтобы суперпрофессионал и новичок писали бы буквально одно и то же, ибо поддержка.
Roma
Ок ок, ну это сейчас не так важно. Давай задачу на lua решим, как тебе идея выше? )
Snusmumriken
Да норм, на подумать.
Hello, World! 🎄
Всем привет, возможно ли выучить луа, за час, день?
Arslan
Всем привет, возможно ли выучить луа, за час, день?
За 15 минут даже: http://tylerneylon.com/a/learn-lua/
Hello, World! 🎄
За 15 минут даже: http://tylerneylon.com/a/learn-lua/
Ну всё равно нужно учить функции и тд
Hello, World! 🎄
Код: t = { a = 3, b = 4 } for key, value in pairs(t) do print(key, value) end Почему вывод всегда разный?
Hello, World! 🎄
a 3 b 4
Hello, World! 🎄
b 4 a 3
Snusmumriken
Ну всё равно нужно учить функции и тд
Их мало и они в основном аналогичны сишке https://www.lua.org/manual/5.1/
Snusmumriken
Ну не "крестам"/"плюсам" же.
Snusmumriken
Код: t = { a = 3, b = 4 } for key, value in pairs(t) do print(key, value) end Почему вывод всегда разный?
Потому что зависит от хеширующей функции. Порядок неопределён. Если тебе нужен порядок — сделай порядок ключей где тебе нужно ))
Snusmumriken
t = { a = 3, b = 4 } keyorder = {"a", "b"} for i, v in ipairs(keyorder) do print(v, t[v]) end
Snusmumriken
Можно сделать полуавтоматическим с метатаблицами. Типа, такой тип таблицы "упорядоченная таблица". Но тогда добавление и удаление ключей будет медленным.
Hello, World! 🎄
А какое отличие pairs от ipairs ?
Snusmumriken
pairs проходит по всем ключам-значениям таблицы, ipairs — только по числовым ключам.
Hello, World! 🎄
pairs проходит по всем ключам-значениям таблицы, ipairs — только по числовым ключам.
Получается если у меня переменная имеет тип данных int, float, то прочитаются только эти строки?
Snusmumriken
Нет, если у тебя любые переменные хранится под ключом int, по порядку от 1 до N без дырок — по ним пройдётся ipairs.
Snusmumriken
Массивная часть таблицы кароч. Таблица как массив.
Snusmumriken
А в лиа модули это вот это? https://www.lua.org/manual/5.1/manual.html#pdf-module
Hello, World! 🎄
lua .org/manual/5.1/manual.html#pdf-module
Hello, World! 🎄
Snusmumriken
Да, но это старая концепция.
Hello, World! 🎄
А как по новым стандартам?
Hello, World! 🎄
Или сейчас проще скачать движок где встроен lua ?
Snusmumriken
*module.lua* local function foo(x, y) return x + y end local function bar(x, y) return x - y end return { foo = foo, bar = bar } *main.lua* local m = require("module") print(m.foo(10, 20)) --> 30
Hello, World! 🎄
Движок — какой движок?
Ну любой, для игр
Snusmumriken
Corona sdk, love2d, defold, cry engine? Minecraft (computercraft)?
Hello, World! 🎄
И интересно также приложения писать и работать с api
Hello, World! 🎄
Snusmumriken
Проверь ))
Hello, World! 🎄
Hello, World! 🎄
Hello, World! 🎄
А приложения же есть движки для приложений?
Snusmumriken
Чего-чего? ))
Snusmumriken
"А коровы же есть молоко для коров?"
Hello, World! 🎄
и можно ли с api общаться в lua? В фомате json запросы get и post
Hello, World! 🎄
Чего-чего? ))
Ну движки для приложений или как их там назвать, gui
Snusmumriken
Это называется "(G)UI-библиотека". Не надо называть их "движками для приложений", тебя никто не поймёт. Есть какое-то количество http://lua-users.org/wiki/GraphicalUserInterfaceToolkits
Snusmumriken
С каким таким api? ))
Hello, World! 🎄
С каким таким api? ))
ну api, например для создания телеграм ботов
Snusmumriken
Можно. Но что такое API в твоём понимании?
Hello, World! 🎄
Можно. Но что такое API в твоём понимании?
ну например, я посылаю ответ серверу, с какими-то данными в виде json и он мне присылает ответ
Snusmumriken
Программная библиотека может иметь API?
Snusmumriken
Может.
Snusmumriken
(тут был сложный вопрос, нафиг)
Hello, World! 🎄
А ну да, например же движки для игр
Hello, World! 🎄
(тут был сложный вопрос, нафиг)
Мне пока именно веб api
Snusmumriken
Вот. Так бы и спросил. "Может ли луа делать веб-запросы?" Может. Но не сразу, надо научить (luasocket/luasec).
Snusmumriken
Карочи, апи это программный интерфейс. Он может быть совершенно любым. У венды, например, есть COM-объекты, которые объединяют всё микрософтовское барахло в одну структуру, ты типа у себя в программе на питоне открываешь какой-нибудь эксель, если он установлен на компе — он при этом запускается без окна экселя. Потом ты им рулишь некоторое время, командуя "закрась эту ячейку, а в другую положи значение и дай мне то что получилось сохранив файл и распечатав его" и закрываешь. Это тоже API. Любой программный интерфейс — API.
Snusmumriken
Извиняться не надо, надо поднять собственный уровень образования.
Hello, World! 🎄
интересует веб api, запросы у сервера
Snusmumriken
Ваще, для чистого луа есть сборочки вроде https://luapower.com/ И вот тут вот сразу гора библиотек, в т.ч. сетевых и даже немного UI есть. Большая часть с норм документацией. Конкретно я использую эту сборку.
Hello, World! 🎄
Я так понимаю lua в исполняемые файлы не компилируется?
Snusmumriken
А вот это интересный вопрос ))
Snusmumriken
И да и нет.
Snusmumriken
Можешь ли ты вшить луа-скрипт в кусок сишного кода, который будет запускать луёвую виртуальную машину и пускать по ней этот скрипт? Да. Происходит ли подобное само собой или средствами инструментов? Нет.
Hello, World! 🎄
А вот это интересный вопрос ))
Да, потому что если чистый луа то скорее нет, а если встроенный то да
Hello, World! 🎄
Я так понимаю, мне из си кода нужно запустить интерпретатор lua, и запустить в нём файл main.lua например.
Snusmumriken
Лично у меня просто есть чуть модифицированный интерпретатор луа, который автоматом запускает файл main.lua из той же директории где лежит этот модифицированный интерпретатор. Поэтому я могу редактировать скрипт и шарить его спокойно. Типа, прога + код к ней.
Snusmumriken
Я так понимаю, мне из си кода нужно запустить интерпретатор lua, и запустить в нём файл main.lua например.
Не совсем, луа-код будет торчать наружу. И если мне это норм — то ты хотел "скомпилировать". Поэтому объявляешь в сишном коде огромный char array, в котором будет нужный тебе луа-код, и заставляешь lua_State его исполнить.
Snusmumriken
Ды ))
Hello, World! 🎄
Если отдельный файл lua, то он его не упакует?
Snusmumriken
Он его может исполнить.
Snusmumriken
Но никто ни во что не упакует.