Nikolay
26.05.2016
05:45:01
Междоус
26.05.2016
06:02:32
Скидывай
Nikolay
26.05.2016
06:12:14
Вечером скину, еще немного не доделал
The Dude
26.05.2016
12:23:40
"
Google
The Dude
26.05.2016
12:23:51
Переменная _ используется в Lua для замены ненужной переменной.
Я бы тут уточнил, что это только соглашение.
Т.е не часть языка.
"Полная совместимость с LuaJIT 5.3"
LuaJIT 5.3 нет и вряд ли.
будет
Nikolay
26.05.2016
12:27:44
не верно написал
lua 5.3 и LuaJIT 2.0
The Dude
26.05.2016
12:32:35
function sum(...)
s = 0
for _, n in pairs(arg) do -- в функции обращаются к ним, как к таблице "arg"
s = s + n
end
return a
end
Аргументы всегда index-based массив.
Поэтому идеоматичнее будет ipairs.
"опциональные аргументы"
А хотя...
Щас нет под рукой луа, можно так ли так?
function (...)
local var = ...
Google
The Dude
26.05.2016
12:38:09
print(var.t)
Nikolay
26.05.2016
12:40:17
Думаю нет. Но можно var = arg. Но надо проверить, я пока в пути
Плюшка
26.05.2016
12:41:42
ща проверю
The Dude
26.05.2016
12:44:50
Плюшка
26.05.2016
12:45:11
local var = {...}
точно можно (в ComputerCraft так делается)
The Dude
26.05.2016
12:45:35
Во. Значит именнованные аргументы можно ещё и просто таблицей кидать.
function test(...)
local var = ...
print(var.t)
end
test({t = "hello world"})
Работает.
Удобно использовать, если опцианальными могут настолько, что туда даже таблицу могут запихнуть.
Плюшка
26.05.2016
12:49:05
можно даже сделать просто
test{t="hello world"}
типа сахар
The Dude
26.05.2016
12:49:48
https://www.lua.org/pil/5.3.html
Точно. Здесь указывается как раз.
Вот понты динамической типизации.
function test (a, b, c)
return a + b + c
end
test(1, 2, {a = "hello world"})
attempt to perform arithmetic on a table value (local 'c')
Нужно чекать, что тебе ещё и таблицу не передали.
https://github.com/PaulBernier/castl
Пфф.
Нет чтобы JS выпилить.
Google
The Dude
26.05.2016
13:10:02
И впилить Lua.
Плюшка
26.05.2016
13:12:43
дык можно же его компильнуть в луа с помощью самого себя )
grinchfox
26.05.2016
13:12:54
Не нужно, это дело соглашения
Лишние проверки вредят производительности
The Dude
26.05.2016
13:13:25
Я, кстати, не в курсе, есть ваще такие для луа.
grinchfox
26.05.2016
13:13:43
Не проще писать на целевом языке сразу
The Dude
26.05.2016
13:13:45
в зиробрэйн или ltd?
Плюшка
26.05.2016
13:14:22
эх, вот бы в луа из коробки сишный препроцессор
The Dude
26.05.2016
13:14:55
упаси боже
Плюшка
26.05.2016
13:20:06
тогда можно бы было писать так
эйты чел блин травка да мет эх
покажи блин мет эх
егор травка
кончил
grinchfox
26.05.2016
13:20:49
Достаточно правильно описать документацию
Я знаю что для vim есть омникомплиция для lua
The Dude
26.05.2016
13:21:25
grinchfox
26.05.2016
13:37:41
А как ты будеш знать о функции без подсказок и документации ?
Чтобы натыкаться на проблемы с её аргументами
The Dude
26.05.2016
14:09:35
grinchfox
26.05.2016
14:12:27
ну если все оформлено с описанием то все будет норм
Google
Snusmumriken
27.05.2016
03:27:49
Ребятки, если есть вопросы по гейдеву/love2d - задавайте ответы.
Я сделал много всяких либок, вроде файловых систем, работающих с глобальными путями, JSON, клиент-серверов (luasocket), шейдеров(glsl, love2d), потоков (love2d), конечных автоматов, событий, FFI, работе с DLL и прочей лабуды. Буду постепенно выкладывать.
grinchfox
27.05.2016
03:29:59
прикольно
Snusmumriken
27.05.2016
03:36:15
Как крошечный ништяк, расширение стандартных строк для работы с utf8.
Ну, это из почти только что написанного.
Требует lua 5.3, очевидно.
Примерная работа:
http://cs633225.vk.me/v633225715/2da1b/u_I2-Ormhdk.jpg
Плюшка
27.05.2016
04:01:32
The Dude
27.05.2016
04:02:03
Require "prepocessing"
А там грамматики.
Плюшка
27.05.2016
04:03:05
можно просто cpp -P file.luapp -o file.lua
Snusmumriken
27.05.2016
04:06:40
Хм. Я могу разве что так:
Конкретно препроцессор можно через хуки, полагаю.
Ну, или по тупенькому: в основном файле - табличка с define, и функция загрузки текстовика, по которому проходимся регулярками. Можно оформить как либу.
С хуками будет красивее, без них - проще.
The Dude
27.05.2016
04:32:41
Делай preprocessing.lua да вороти там чо хош
В язык это пихать не нужно.
Snusmumriken
27.05.2016
04:36:14
В lua, функции - объекты первого класса. Вместо define можно просто объявлять глобальные (или локальные в файле) переменные. Заодно, это кеширует функции и экономит время исполнения (искать среди локальных быстрее чем среди глобальных, на длинных циклах критично).
local sin = math.sin
local cos = math.cos
return sin(a)^2 + cos(a)^2
grinchfox
27.05.2016
04:36:40
luajit вродебы умеет их инлайнить
Google
grinchfox
27.05.2016
04:36:45
(надеюсь)
Snusmumriken
27.05.2016
04:37:46
Jit умеет в использование сишных структур, стандартных функций и библиотек.
Кстати, в том числе библиотек, написанных для сишного кода, а не только для луа.
Ну там, я храню игровую карту 5000х3000х3 тайлов в сишных структурах, потому что в виде луа-таблицы она объявляется пол минуты, жрёт пол гига памяти и медленно обрабатывается. В виде struct-массива - весит ~45мб оперативки и создается за долю секунды. Такие дела.
The Dude
27.05.2016
04:48:04
Ну так у луа охерительныйffi
луагит