Alexander
да
Dika
MrSmith
MrSmith
А смысл?
Dika
Хах
a = a == nil and b or a
Dika
Это будет работать не только для nil
Dika
Еще и для false
Snusmumriken
a = a == nil and b or a
А так оно ещё и не станет false, и если b - false - посчитает его за истину, типа b - существует.
a = b ~= nil and c or nil
Извращаться можно долго : )
Dika
Snusmumriken
Лень читать, хм.
Dika
Нет у меня тока nil может быть
MrSmith
Проблема возника, решилась, исчезла, возникла, и теперь я даже не помню первоначальную
Ivan
MrSmith
game.players = {}
--------------------------------------
game.players[1].controller="[human]"
MrSmith
Пишет не может в нулевое значение
MrSmith
Я поле создаю
Ivan
Там же нет ничего в players
MrSmith
Ребят, как включить поддержку в luajit 5.2?
mva
USE="lua52compat" emerge luajit::lua
MrSmith
MrSmith
Куада писать то
mva
в терминал
MrSmith
Пример можно
mva
(в смысле, какой вопрос, такой и ответ)
mva
непонятно ни под какую ОС ты это хочешь сделать, ни что уже сделал, ни что получил
mva
поэтому я ответил как я это делаю в своей ОС
MrSmith
luajit macos хочу поддержку 5.2
mva
а ставишь ты его откуда? скачал исходники и компиляешь?
mva
или homebrew какой, или macports
mva
или ещё какое
mva
почему клещами всё надо вытаскивать? :)
MrSmith
MrSmith
Пересобирать?
MrSmith
Или оно нативно может? Мне unpack нужен его нет, нужно еще пару их тоже нет
mva
1) пересобирать. Иначе никак. И я не помню как там homebrew, даёт ли возможность выбора опций
mva
2) unpack (как и string.utf8 например), есть отдельно, на Pure Lua даже
Alexey
Alexey
LuaJIT 5.2 это не совсем Lua 5.2
Alexey
Note: this provides only partial compatibility with Lua 5.2 at the language and Lua library level. LuaJIT is API+ABI-compatible with Lua 5.1, which prevents implementing features that would otherwise break the Lua/C API and ABI (e.g. _ENV).
Alexey
http://luajit.org/extensions.html#lua52
MrSmith
ребят, как получить подобие unpack
MrSmith
Нужен
MrSmith
Кстати, я не понял, как в json может быть таблица ключом таблицы это законно?
MrSmith
Что показать?
MrSmith
{ [{}]={}}
MrSmith
Мне unpack нужен, что бы получать все поля таблицы включая nil
MrSmith
Я тебе про что и говорю
MrSmith
Это некоректно для json
MrSmith
Или я что то не понимаю?
MrSmith
Не поддерживает json такие перуеты походу
MrSmith
Так я разобрался как решить проблему рекурсивных связей ссылок
MrSmith
Но вот что не решил, как определить если указания ключа
MrSmith
А с другой стороны может ли быть это важно
MrSmith
[3]=123
MrSmith
Тоесть когда мы переводим в json должен ли это быть массив? с двумя null мне кажется что нет
MrSmith
правильней наверное будет {"3": 123}
Roman
В js все примитивно и однозначно: в массиве ключи только числа, можно 3, в хеше ключи только строки, и ничего более, можно "3"
Roman
Можно уточнить, что в js ключом любого объекта может быть или число, или строка, если присваивать уже готовому, а в json нельзя готовому ничего присваивать, по этому там определенно все. По этому давно пора бы lua объектную нотацию ввести и json в прошлом оставить, да застопорился прогресс в нулевых
MrSmith
Roman
Ну вроде json - javascript object notation, а миру не хватает luon
MrSmith
Я вод думаю на счет массивов, вопрос вот в чем, массив это структура с числовыми индексами ввиде натуральных чисел, вопрос в том, что делать если у ключа значение таблица, хотим ли мы создать массив с referenc на таблицу или нет
MrSmith
Вообщем я подумал, наверное в идиологии json главное это индексация, соотвественно, главное, что-бы ключи были натуральными числами
mva
матрица!
Snusmumriken
Snusmumriken
У меня базовая версия luajit, без совместимости с 5.2.
Snusmumriken
Основная фича версии 5.2 - метаметоды __pairs/__ipairs и __gc.
Alexey
Основная фича версии 5.2 - метаметоды __pairs/__ipairs и __gc.
Для меня более важной функциея является поддержка yeild across C functions.
LuaJIT поддерживает yeild в стандартных функциях (например pcall), но не
предоставляет такой возможности черес С API.
На сколько я знаю LuaJIT не поддерживает __gc для таблиц.
Ну и goto работает без LUAJIT_ENABLE_LUA52COMPAT :)
Tverd
Вы там кто балуется с анпаком, знайте что у него количество распакованных элементов ограничено. у меня 16к где-то выдавал
Snusmumriken
Да, у луа - ограничение на количество переменных в одной области видимости.
MrSmith
Ребят, как мне получить что то типа { key = { key = value}}
MrSmith
Мне ключь значение динамически добавлять надо
MrSmith
Забей
MrSmith
Алгоритм сложный я ссылку могу дать
MrSmith
https://hastebin.com/hakiyapiwa.lua
Roman
Время ляпнуть чего-нибудь невпопад.
Динамически добавлять ключи - чтож, довольно нубский вопрос, но он становится перед каждым начинающим программистом, лично для меня с этим пока не все понятно.
Итак, ключ - { key = { key = value}} - тут ключ - это переменная key, любая переменная в lua внутри представлена в виде Сишной структуры, тобишь, является указателем на онную.
Значит, получив этот адрес структуры, можно получить само её значение, после чего управлять им как угодно.
Но ключевое слово тут - динамически, что наталкивает на мысль о динамически выделяемой памяти.
Завсегдатаи этого чатика копались в луа и луаджите, я только смотрел как там числа парсяться, чтобы реализацию позаимствовать, но догадываюсь, что значение в структуре переменной - это не какой-нибудь int, а тоже указатель.
Тогда в этот указатель можно положить адрес на начало начей динамической цепочки ячеек, я пока умею только в однонаправленные стеки и очеди.
Суть в том, что каждая ячейка в такой очереди содержит значение и ссылку на следующую ячейку, тогда можно динамически добавлять и освобождать обратно в кучу память.
Примерно так можно динамически хранить в ключе таблицы любые данные, любого размера и любой структуры.
Roman
На самом деле по вопросу можно догадаться.
a = { key = { key = value}}
b = {}
b[key] = {key = value}
c = {}
c[key] = {}
c[key][key] = value
a == b and b == c and, you know, a == c
Roman
уже писал, что учил луа по туториалу learn x in y minutes
сказали, за 15 минут невозможно ничего изучить, мол бессмысленно
но! если бы люди перед вопросами "как положить в таблицу ключ и значение" смотрели хотя бы тот самый маленький туториальчик, вопросы отпадали бы
Roman
а как положить в таблицу ключ через си-бридж без использования луа-си апи - вот действительно годная тема
Roman
пахнущая хлебушком в форме троллейбуса, но все же
MrSmith
Потому что луа плох