Alex
Also there is a similar syntax for storing functions in tables:
function a.b.f(...)
end
Alex
"a" я так понимаю это таблица и ее нужно сначала инициализировать
Alex
f - это имя функции
🌗
это сложновато
item:extend() = extend(item)
item.extend() = extend(), который создан в таблице item
Alex
что такое "b"????
🌗
ㅤ
Это не списки, а таблицы.
Alex
В рекурсивных функциях пример: return f().x -- not a tail call, the function's return value needs to be used in a table index expression after it returns
Alex
f().x это как?
Tony
f().x это как?
Ну как, f() возвращает объект, у которого есть поле х
Tony
И к нему мы собираемся получить доступ
Snusmumriken
Snusmumriken
Можно сделать рекурсивной, лол кек.
function f(a, b)
if a < b them
return f(a + 1, b)
end
return {x = a, y = b}
end
f(10, 20).x --> 20
Ну ты понел. Функция рекурсивна, но под конец возвращает табличку.
fgntfg
Сын сегодня про lua спрашивал. Осваивает роблакс похоже
jon
Всем привет, а как в формате gmt получить время?
jon
На стековерфлоу я нашёл ответ, который странно работает) в разных онлайн редакторах разный результат выдается
jon
jon
Или я ошибаюсь?
Aqendo
jon
Snusmumriken
Ммм, я переставлял часовой пояс и спрашивал луа про время. И каждый раз получал одну и ту же минуту.
Aqendo
Snusmumriken
Потому что он по гринвичу.
Snusmumriken
А вот os.date уже кажись конвертирует в дату с поясами.
Snusmumriken
Так, или нет. Надо чекнуть, хмм.
jon
https://gist.github.com/ichramm/5674287
jon
Таки нашёл) другим поисковиком воспользовался
Snusmumriken
Да, таймштампик действительно не зависит от часового пояса, а вот преобразование его в дату тем или иным образом запоминает часовой пояс при запуске программы, и при получении даты берёт часовой пояс с запуска.
Давно хотел это проверить.
SapDragon
Здраствуйте, появился еще вопрос по Sol.
У меня есть условный структ:
struct Test
{
int First = 0;
}
Я получаю ссылку на First:
auto& PointerToFirst = *(int*)((std::uint32_t)(Test));
И передаю его в луа, как я понимаю луа получает значение по ссылке, и сохраняет в инт:
lua["TestReference"] = PointerToFirst;
Поэтому, когда я пытаюсь прочитать значение по TestReference спустя время, то там остается старое, и при попытке записать что-то тоже самое ( TestReference = 606 )
Поэтомв вопрос:
Возможно ли как-то передать именно ссылку в луа?
Igor
Igor
А юзердату уже какими-то внутренними методами нужно будет читать, будь то заранее реализованная тобою сишная функция, либо же ffi.
SapDragon
Igor
SapDragon
Денис
SapDragon
SapDragon
SapDragon
а поле к которому он обращается number ( по логике ссылка )
SapDragon
Денис
А вот мне интересно: при создании метатаблиц воротить обычные методы лучше в первом параметре setmetatable() или сразу же пихать их во второй?
Денис
SapDragon
Денис
SapDragon
А, это условная обёртка над Get / Set?
Денис
Предполагаю, что да, но не уверен
В этой реализации при вызове метода new создается юзердата структуры LUASOUND и на нее навешивается метатаблица, которая создана в процедуре luaopen_luasound
Snusmumriken
Александр
Alex
почему интересно в официальной документации операторы присвоения обозначаются через ::= ?
Alex
Alex
ведь это же по факту не работает
Alex
и по конструктору таблиц так и не понял
Alex
tableconstructor ::= ‘{’ [fieldlist] ‘}’
fieldlist ::= field {fieldsep field} [fieldsep]
field ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp
fieldsep ::= ‘,’ | ‘;’
Alex
когда ключ нужно в квадратные скобки оборачивать и когда нужно еще и кавычки?
Highly Likely
Это формальное описание конструкций. Это не синтаксис языка.
Грамматика, строго говоря.
Highly Likely
Alex
привык работать с официальными документациями, но пока что действительно вижу какие то не понятно чем обоснованные усложнения
Highly Likely
Highly Likely
Highly Likely
Highly Likely
Alex
Под актуальную 5.4 видимо только официальная дока на сайте. Были какие то значимые изменения по синтаксису за 10 лет или можно на это не заморачиваться?
Alex
Highly Likely
Highly Likely
Там есть различия, но некритичные между 5.1 и 5.4 в синтаксисе
Highly Likely
Если с английским норм, можно читать про 5.3
Highly Likely
Если с ним туго, можно брать 5.2 и не париться
Alex
Обычно, когда вы работаете со списком, вам нужно знать его длину. Она может быть константой или может быть где-то записана. Обычно мы записываем длину списка в поле с нечисловым ключом. По историческим причинам некоторые программы используют для этих целей поле "n".