brestows
Спасибо огромное :)
brestows
Спасибо :) я lua только учу, спасибо большое
Elias
И ещё есть крутая вещь, о которой я долго не знал. Если у тебя скрипт лежит в "lib/math/functions.lua", то можно сделать: require 'lib.math.functions' Красиво выглядит такой синтаксис :D
local somefunc = require "somelib".somefunc
Snusmumriken
модуль somelib должен возвращать локальную таблицу, соответственно
Elias
Да, вот это тоже крутая вещь Жаль, что нельзя как в Питоне импортировать лишь часть функций из модуля. Все равно ведь require "somelib" положит ВСЮ таблицу в package.loaded
>модуль somelib должен возвращать локальную таблицу, соответственно Естественно. А вот в Мунскрипте такая штука не прокатит — нужно писать require("somelib").somefunc.
Какая разница? Ты делаешь модули которые реквайрятся пол часа?
local lpeg = require "lpeg" local V = lpeg.V local Ct = lpeg.Ct ... Неудобно.
Snusmumriken
Да ладно.
Elias
Какая разница? Ты делаешь модули которые реквайрятся пол часа?
Нет, просто как-то более явно показывается зависимость от конкретных вещей + память не тратится Где-нибудь в системах с маленьким кол-вом RAM это может иметь значение. Но это так, теоретически. Мне норм и то, что есть. Просто "ах если бы, ах если бы"
import V, C, Ct from require "lpeg" Удобно.
Elias
Да, но потом же освобождает память, которую уже не использует. Ну и Lua потенциально мог бы использовать меньше RAM после загрузки модуля и выпила ненужных функций. Но это сложно реализовать с системой модулей Lua, да. Кто-нибудь писал что-нибудь серьёзное на Moonscript? Хотел заценить как-нибудь и узнать, каковы ощущения от написания на нём. :D
Tverd
Отлично на нем пишется... Ну игрушки точно. Я про мунскипт
Пишу на нём большую часть игры на love2d. Удобен тем, что писать меньше кода, какие-то вещи делаются быстрее (import, items = [x * 2 for _, x in ipairs items], быстро сделать из куска кода функцию и сразу куда-нибудь её воткнуть (например, в pcall) — мелочи, но приятно). Классы встроенные удобны (правда, компилируются в большую кучу кода). Проблемы, с которыми столкнулся (первая — не в этом проекте): нельзя делать цепочки методов в несколько строк. Если в Lua можно писать вроде from(array) -- lualinq :where(function(item) -- ... end) :select(function(x) -- ... end):toArray() , то в Moonscript либо в одну строку, либо никак. Всякие линтеры под него менее развиты (тот же luacheck умеет больше, чем moonc -l). Пришлось вставить костыли для вывода правильных (не луашных) номеров строк в traceback'ах при падении.
Tverd
with flag = display.newImage @view, "assets/images/flags/flag_#{@name}.png", 0, 0, true .name = 'flag_'..@name \scale 0.342, 0.342 \addEventListener 'touch',@
with — не то.
Tverd
так вполне работает, щас найду еще цепочку
Если используешь with, то дёргаются функции из одной таблички, а в примере по цепочке передаётся каждый раз новая таблица. Даже issue есть на эту тему: https://github.com/leafo/moonscript/issues/347
Tverd
кстати, пока нашел - в фукцию отправляется таблица с ключами display.newBitmapText parent: @view :text x: 0, y: 96 font: 'BebasNeue_64_bold' fontSize: 34
Tverd
Не могу найти, помню сильно этовался, но вроде победил
Tverd
Не вышло, может и не работают цепочки, во всяком случае не компиляются
brestows
/help@FailsBot
Alexey
/help@FailsBot
/help@FailsBot
mva
что с вами тремя?
Dika
BLUE TEXT MUST CLICK I AM A STUPID ANIMAL THAT IS ATTRACTED TO COLORS
Dika
и где же он blue?
я про команды
mva
а :)
B
вот думаю если делать вот так, нормально ли будет : local genTable= {} local buttons = {1 = button, 2 = button, ets} local events = {1 = event, 1 = event, ets} -- не знаю к какой таблице подмазать, если на кнопку будет по -- нескольку ивентов или еще чего, если в общем размер будет -- разный for i = 1, #someTable do genTable[i] = { {'button' .. i = buttons[i], 'event' .. i = events[i]} } end просто чет не хватает мозга как через pairs нормально работать с несколькими таблицами, потому сделал через простые ключи 1 и '1' как ключи одно и тоже или нет?
B
почему так да : t[1] = { } t[1]['num'] = 13 t[1]['pos'] = 4 а так нет : t[1] = { {'num' = 13, 'pos' = 4} }
B
так нет : t[1] = { 'num' = 13, 'pos' = 4 } а так да : t[1] = { ['num'] = 13, ['pos'] = 4 } у меня уже голова болит
B
есть тут кто7 за анимацию кто может пояснить
B
есть штука вроде local fps = 10 local anim_timer = 1 / 10 local frame = 1 local num_frames = 6 anim_timer = anim_timer - dt if anim_timer <= 0 then anim_timer = 1 / fps frame = frame + 1 end
B
вот сам кусок с anim_timer не совсем понятен кусок anim_timer = 1 / fps это как время на кадр? а anim_timer - dt это мы как просто отсчет ведем до переключения? с точки зрения того что происходит так оно и есть, я про саму логику операции anim_timer - если идет как количество времени на кадр и мы не можем поставить просто dt потому как это что то типа разницы во времени между тиками или вызовами определенных процессов, процессор работает бытренько потому и разница эта, как значение, небольшая
Dart Kane
Всем привет
Dart Kane
кто может напомнить, за что отвечает плагин ABI в AMS?
Dart Kane
А то из дому принёс проект в офис
Dart Kane
А АМС ругается на этот плагин
Dart Kane
Тип не лицензирован
Temirgali
Вжух и реклама
Anonymous
Anonymous
Всем привет! Кто-нибудь использовал IupLua для интерфейса? Не могу понять, почему не работает выпадающий список. Официальный пример не работает. Если не сложно, проверьте у себя - увидите список или нет. Простые окна с кнопкой OK - показывает, а тут просто молчок...проглатывает и тишина.
Anonymous
И как я понял, выпадающий список в этой библиотеке работать должен только для Windows...Как-то странно это.
B
Есть где посмотреть полный список вещей типа __index?
Гугли Lua metamethods.
http://lua-users.org/wiki/MetatableEvents
B
Я тк понял love работает только с некоторыми папками и не может во всю систему?
Elias
Может, если ты будешь указывать относительные или абсолютные пути на файлы И ещё почитай про package.path
Snusmumriken
Я тк понял love работает только с некоторыми папками и не может во всю систему?
А если тебе жутко нужен нормальный доступ куда-то ещё - use LFS/standart_io, luke
B
не я просто читал, там так особо не густо с информацией по этому поводу, думал изначально что love вроде как в состоянии саздавать\удалять дирректории, полноуенно взаимодействовать и все такое, чем то думал похож будет возможно хотя бы на тот же проводник винды
Snusmumriken
Хе, чтобы делать проводник - это надо lfs, да. Ничего страшного, оно не сложное.
> >Работа оплачивается > И у нас есть победитель в номинации «Лучшая вакансия 2017»! : )
Alexander
Всем привет! ) Опубликована программа митапа Lua in Moscow 7-го декабря https://www.meetup.com/Lua-in-Moscow/events/244872554/?eventId=244872554 приходите, вас ждут доклады, пицца и вкусняшки!
Tverd
очень, на мой взгляд, очень интересная программа. Особенно DSL. Александр не так давно грешил такими же вещами.
Весьма актуальные для меня темы. Как раз в последнее время уклон к декларативному описанию всяких вещей (в моём случае по схеме, описанной в Lua-таблице (со вложенностями), генерируется форма, она заполняется данными, с неё собираются данные, проверяются, пишутся в БД). Можно сэкономить кучу времени, если придумать удобный способ декларативного описания нужных вещей, но создание интерпретатора такого описания может быть само по себе нетривиальной задачей. Но Lua удобен для этого, помогает делать такие вещи довольно компактно. А к DSLям я в игре на love2d подхожу. Идея декларативного описания уровней (с последующим созданием редактора уровней) оказалась немного провальной, так как это bullet hell, и там нужно очень много свободы в том, чтобы обеспечить правильное поведение объектов в игровой сцене (пуль, противников, даже заднего фона). Но описывать уровни таким же кодом, каким написаны внутренности игры, нельзя — громоздко, много лишних деталей, легко сломать. Поэтому нужно дать возможность удобно делать именно нужные вещи, при этом оперируя небольшим количеством сущностей, привязанных к "предметной области" (пуля, паттерн пуль, противник). В общем, нужен DSL (причём, можно обойтись и встроенным). Я тут много написал, но если коротко: доклады обещают быть полезными.
Tverd
Весьма актуальные для меня темы. Как раз в последнее время уклон к декларативному описанию всяких вещей (в моём случае по схеме, описанной в Lua-таблице (со вложенностями), генерируется форма, она заполняется данными, с неё собираются данные, проверяются, пишутся в БД). Можно сэкономить кучу времени, если придумать удобный способ декларативного описания нужных вещей, но создание интерпретатора такого описания может быть само по себе нетривиальной задачей. Но Lua удобен для этого, помогает делать такие вещи довольно компактно. А к DSLям я в игре на love2d подхожу. Идея декларативного описания уровней (с последующим созданием редактора уровней) оказалась немного провальной, так как это bullet hell, и там нужно очень много свободы в том, чтобы обеспечить правильное поведение объектов в игровой сцене (пуль, противников, даже заднего фона). Но описывать уровни таким же кодом, каким написаны внутренности игры, нельзя — громоздко, много лишних деталей, легко сломать. Поэтому нужно дать возможность удобно делать именно нужные вещи, при этом оперируя небольшим количеством сущностей, привязанных к "предметной области" (пуля, паттерн пуль, противник). В общем, нужен DSL (причём, можно обойтись и встроенным). Я тут много написал, но если коротко: доклады обещают быть полезными.
А ты смотрел исходники описания предметов в diablorl? Неплохой вариант, можно взять оттуда идеи dsl. Или doomrl, та же команда делала
Спасибо, посмотрю.
Alexander
Рад, что интересно, приходите послушать! :)
Tverd
1000км пройти не получится, но видео оттуда посмотрел бы с удовольствием
Alexander
Будет и онлайн-трансляция
Snusmumriken
Опачки, прибытие
B
Падазрительна
Alexander
Ребята, вы не из t.me/luainmoscow набежали? :)
Elias
Время набежать в Lua in Moscow в ответ
brestows
Всем привет, народ, подскажите где я туплю, есть простой модуль: local modulname = {} function test() ... end; return modulename; лежит модуль в папке lualib рядом с папкой это лежит скрипт такого содежания: local mod = reuire ('modulname') получаю ошибку что модуль не найден добавил в скрипт строчку package.path = package.path .. ';./lualib/?.lua' все равно ругается что модуль не найден, перекинул в /usr/share/lua/5.1/ все нормально подгрузилось, как заставить его видить модуль ?
brestows
no field package.preload['asPLhotline'] no file './asPLhotline.lua' no file '/usr/share/lua/5.1/asPLhotline.lua' no file '/usr/share/lua/5.1/asPLhotline/init.lua' no file '/usr/lib64/lua/5.1/asPLhotline.lua' no file '/usr/lib64/lua/5.1/asPLhotline/init.lua' no file './lualib/asPLhotline.lua' no file './asPLhotline.so' no file '/usr/lib64/lua/5.1/asPLhotline.so' no file '/usr/lib64/lua/5.1/loadall.so
brestows
хотя видно что путь он добавил
brestows
но модуль сам не загружает
Snusmumriken
Это всё потому что оригинальный интерпретатор ищет файлы только рядом с собой, но не рядом с запускаемым скриптом. И относительные пути (с точкой) тут не помогут.
brestows
да
brestows
если прописать путь полный
brestows
все ок
brestows
я понял спасибо :)
Tverd
./ означает что ты запускаешь сам mail.lua по относительному пути типа: lua51 main.lua, тогда он смотрит в тех папках которые есть относительно этого пути. Если ты луа скрипт запускаешь так: lua51 /home/yasya/main.lua то болт, пути абсолютные