Vladislav
Привет! Кто-нибудь знает как добавить аннотации к кастомным типам в EmmyLua, которые приезжают из сторонних библиотек? Что-то типа define-файлов?
в teal это делается через tl.d файлы, но в emmylua ничего такого не нашел
🐅🤦♂️
Vladislav
Здравствуйте. Немного не в тему. Вы писали teal обёртку над luafun, мне интересно, довели до рабочего состояния? И есть ли она в открытом доступе?
хм, нет, меня остановило, что teal долго релоадится, а для меня это было важно.
Может быть вернусь к этому, пока только совсем зачатки типа:
local record fun
record iterator<T>
sum: function(iterator<number>): number
reduce: function<R>(iterator<T>, (function(R, T): R), R): R
end
iter: function<T>({T}): iterator<T>
sum: function({number}): number
reduce: function<T,R>({T}, (function(R,T):R), R): R
end
return fun
🐅🤦♂️
хм, нет, меня остановило, что teal долго релоадится, а для меня это было важно.
Может быть вернусь к этому, пока только совсем зачатки типа:
local record fun
record iterator<T>
sum: function(iterator<number>): number
reduce: function<R>(iterator<T>, (function(R, T): R), R): R
end
iter: function<T>({T}): iterator<T>
sum: function({number}): number
reduce: function<T,R>({T}, (function(R,T):R), R): R
end
return fun
Да, компиляция долгая. Я хотел встроить в свой проект какую-нибудь вспомогательную библиотеку в функциональном стиле. Есть moses и luafun. Где-то видел замеры производительности сильно не в сторону moses. Она написана более прямолинейно, а luafun написана с учётом понимания как оптимизирует luajit.
Vladislav
Yar
Люди добрые!
Вечер добрый!
Посоветуйте, пожалуйста, литературу не сильно подробную и глобальную, но которая позволит понять lua и пытаться понемногу на нем писать
Джифорсович
иерусалимски
Yar
Alexander.
А хер его
Но вообще самому интересно что там по литературе у луа
Язык то не особо популярен
Джифорсович
Alexander.
ложь
Ну ладно
Скажем так не "попсовый"
ShadoWalkeR
Господа. А подскажите пример того как на lua сделать простейший rest сервер - задача слушать порт и на get id возвращать содержимое кэша
Yuriy
ShadoWalkeR
Не - тарантул. Поэтому голый луа
Timur
Yuriy
ShadoWalkeR
По идее можно - там видел примеры с expitaiond для обработки TTL. Но как я понял из документации - lua для таких вещей и используется - прослойка между самими тарантулом и всем остальным
ShadoWalkeR
именно что тарантул
Yuriy
Timur
именно что тарантул
https://github.com/tarantool/http#using-routes а почему этого недостаточно?
ShadoWalkeR
Это я уже попробовал - такое ощущение что документация сильно устарела
ShadoWalkeR
А. Или надо было попробовать поставить через tarantoolctl а не через luarocks
Timur
ShadoWalkeR
В тарантульный чатик я уже ходил, когда по их примеру в документации реплика М-М не собиралась 😃
ShadoWalkeR
Но это обычно крайняя мера - спрашивать в профильном рукоммьюнити
ShadoWalkeR
Забавно 😃 поставленное luarocks прекрасно находится в системе. А вот через tarantoolctl
дек 17 14:04:51 tkamailio1-chel2 tarantoolctl[11405]: Start failed: /etc/tarantool/instances.available/td_registrar.lua:1: module 'http.server' not found:
ShadoWalkeR
Спасибо за помощь - пошел дальше экспериментировать с http
Timur
ShadoWalkeR
Да я уже разобрался
🐅🤦♂️
ㅤ
ㅤ
В чём проблема?
🐅🤦♂️
В чём проблема?
Да не в чем не проблема. Для меня это имя программы выглядит как забавная отсылка.
Vladislav
Ярослав
Всем привет. У меня есть таблица значений. Можно как-то присвоить ячейке этой таблице ссылку на значение (number или string) из другой таблице? Чтобы при изменении значения x в таблице B оно также менялось в таблице A?
Snusmumriken
Всем привет. У меня есть таблица значений. Можно как-то присвоить ячейке этой таблице ссылку на значение (number или string) из другой таблице? Чтобы при изменении значения x в таблице B оно также менялось в таблице A?
Гипотетически, но нужны прокси-таблицы.
tableA, tableB = {}, {}
proxtA, proxtB = {}, {}
local function __newindex(t, k, v)
rawset(tableA, k, v)
rawset(tableB, k, v)
end
setmetatable(proxtA, {__index = tableA, __newindex = __newindex})
setmetatable(proxtB, {__index = tableB, __newindex = __newindex})
Для изменения и получения ключей используешь прокси. Они пустые.
Snusmumriken
Но проще использовать одну и ту же таблицу с одной прокси.
mytable = {}
proxy = setmetatable(
{},
{__index = mytable,
__newindex = function(self, ...) rawset(mytable, ...) end
}
)
Добавления ключей в прокси изменяют их в основной таблице. Из прокси можно получать те же значения по тем же ключам что в основной таблице.
Ярослав
Гипотетически, но нужны прокси-таблицы.
tableA, tableB = {}, {}
proxtA, proxtB = {}, {}
local function __newindex(t, k, v)
rawset(tableA, k, v)
rawset(tableB, k, v)
end
setmetatable(proxtA, {__index = tableA, __newindex = __newindex})
setmetatable(proxtB, {__index = tableB, __newindex = __newindex})
Для изменения и получения ключей используешь прокси. Они пустые.
Пойду почитаю по-подробнее про прокси-таблицы, спасибо
Snusmumriken
А ещё проще использовать буквально одну и ту же таблицу.
t = {foo = 10}
a, b = t, t
a.foo = 20
print(b.foo) --> 20
t, a и b это одна и та же таблица.
Snusmumriken
Ярослав
А теперь главный вопрос: зачем оно тебе? ))
аниматор делаю с конечным автоматом... если при иницализации нового состояния не указать какие-то параметры, то они берутся из default состояния. нужно чтобы во время игры при изменении default во всех состояниях что взяли его значение значение тоже поменялось
Snusmumriken
Пфф
Snusmumriken
Передавай ссылку на default всем состояниям, и всё.
Snusmumriken
Snusmumriken
Потому что единственное для чего подобная схема с проксями может быть нужна по моим соображениям — для синхронизации нескольких объектов, которые должны быть пачкой сериализованы и десериализованы, поэтому тут нет дублирований ссылок на одну и ту же таблицу.
Snusmumriken
setmetatable(my_state, {__index = default})
Snusmumriken
Соответственно локальные параметры можешь менять у state, глобальные для всех стейтов у default.
Ярослав
👍
🐅🤦♂️
Ярослав
🐅🤦♂️
🐅🤦♂️
Snusmumriken
Джифорсович
Джифорсович
там поинтер в структуре или как? 🤔
Snusmumriken
Igor
Snusmumriken
Если что, я изучал их на протяжении где-то полугода в несколько подходов, пока окончательно понял что там на самом деле происходит, и несколько оно просто.
Мозг - как анус, если концепция не влезает - надо разрабатывать.
Snusmumriken
Ну и да, очевидность штука относительная, если у тебя был опыт перегрузки в жаваскрипте, ты бы очень быстро понял как работают мт, и наоборот. После понимания концепции, расширяется горизонт очевидности.
Snusmumriken
Это можно легко заметить по преподавателям в вузе, которым очевидно то что вообще не очевидно студентам ))
Luсky
Тем временем все ждут публикацию игры "Разлом", сделанной на лучшем в мире движке для текстовых игр и супермодуле парсерного ввода.
Snusmumriken
Каеф
Luсky
Разлом - КОНТИГР
https://kontigr.com/game/2966/
Luсky
Тащемто уже можно потыкать.
Luсky
Плюс - можно потыкать онлайн.
Luсky
Всё кошерное - .lua
Шамиль
привет