
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
луагит