@ProLua

Страница 16 из 307
Nikolay
26.05.2016
05:45:01
здаров народ)) чем луа крут? он востребован(просто я про него не где не слышал кроме сталкера))) )?
я готовлю презентацию про Lua и Tarantool, если интересно могу потом скинуть

Междоус
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
Не нужно, это дело соглашения
Это клёво, если все юзают ide, которое тебе подкажет тип.

Я, кстати, не в курсе, есть ваще такие для луа.

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

grinchfox
26.05.2016
13:37:41
А как ты будеш знать о функции без подсказок и документации ?

Чтобы натыкаться на проблемы с её аргументами

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, очевидно. Примерная работа:

эх, вот бы в луа из коробки сишный препроцессор
Есть jit и ffi. Плюс ничто не мешает делать свои dll-ки.

http://cs633225.vk.me/v633225715/2da1b/u_I2-Ormhdk.jpg

Плюшка
27.05.2016
04:01:32
The Dude
27.05.2016
04:02:03
я про #define и прочее
Так сделай кастомный.

Require "prepocessing"

А там грамматики.

Плюшка
27.05.2016
04:03:05
можно просто cpp -P file.luapp -o file.lua

Snusmumriken
27.05.2016
04:06:40
Хм. Я могу разве что так:

Конкретно препроцессор можно через хуки, полагаю.

Ну, или по тупенькому: в основном файле - табличка с define, и функция загрузки текстовика, по которому проходимся регулярками. Можно оформить как либу.

С хуками будет красивее, без них - проще.

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

луагит

Страница 16 из 307