
Group Butler [beta]
12.07.2017
03:18:31
Добро пожаловать в чат pro.lua, Dart Kane! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Dart Kane
12.07.2017
03:19:30
Всем привет
Все ещё спят?
Тогда позже зайду)

Google

Group Butler [beta]
12.07.2017
06:40:02
Добро пожаловать в чат pro.lua, Mikhail! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.
Добро пожаловать в чат pro.lua, Владислав! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.
Добро пожаловать в чат pro.lua, Mikhail! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Tverd
12.07.2017
10:00:55
Парни, а кто-нить делал на луаджите демона? со всей фигней, перехват stdin stdout

Alexey
12.07.2017
10:15:09
Я на Lua делал.делаю Windows Services :)

Tverd
12.07.2017
10:21:04
Это круто. Но мне бы юних ) Правда нашел кое-что, буду ковырять

Mons
12.07.2017
21:04:37
напилил либу для работы с бинарными данными
https://github.com/moonlibs/bin
буду признателен за критику и предложения
пример реального использования можно посмотреть тут: https://github.com/moonlibs/connection-scribe/blob/master/connection/scribe.lua

Snusmumriken
12.07.2017
23:56:41
Кстати отлично

Vadim
13.07.2017
04:42:51

Group Butler [beta]
13.07.2017
09:18:46
Добро пожаловать в чат pro.lua, Skonix! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Mons
13.07.2017
11:02:00

Snusmumriken
15.07.2017
03:30:29
Чуть балуюсь с openresty, накатал шаблонизатор в 45 строчек.

Google

Snusmumriken
15.07.2017
03:32:27
Хотя можно вместо кучи вызовов, дёргать метод :add(...)
Ну, суть более-менее понятна, думаю.
А то задолбался с тем, что любой мало-мальски сложный шаблон требует жаваскриптов и прочей лабуды, замена контента тоже требует жаваскриптов и всё такое. И шаблонизаторы тащат.
Надо же хоть когда-то веб осваивать, пусть даже велосипедами ))
UPD: Допилил шаблонизатор на одиночные теги (как теги типа <br>, так и проперти в типа <a href="image.png" download>), Запилил загрузчик файлов, роутер ajax-запросов. Это действительно забавно.
Осталось подрубить БД и развлекаться.

Vadim
15.07.2017
11:54:41
я
только я не костыляю шаблонизатор
ибо итак уже пучок есть

Azoyan
15.07.2017
12:23:45
Парни, можно в луа прокинуть по ссылке что-то?
аналог на C++ void addOne(int& n) { n += 1; }
main() { int a = 4; addOne(a); assert(a == 5); }

Philipp
15.07.2017
12:36:40
Передавай таблицей, они всегда по ссылке передаются

Azoyan
15.07.2017
12:39:33
require "move"
Player = {x = 4, y = 9}
файл move.lua function moveTo(startPoint, destPoint, speed)
if (startPoint.x ~= destPoint)
then
startPoint.x = startPoint.x + speed
end
end
у меня в другом файле, где я создал таблицу Player, в этой таблице значения player.x и player.y поменяются?

Philipp
15.07.2017
12:48:17
А как ты вызываешь moveTo?

Azoyan
15.07.2017
12:49:35
destination = { x = 60, y = 51 }
speed = 30
moveTo(Player, destination, speed)

Philipp
15.07.2017
12:50:14
function test(table)
table.x, table.y = table.x + 10, table.y + 20
end
t = {x = 1, y = 2}
test(t)
print(t.x, t.y) --t.x 11 t.y 22

Azoyan
15.07.2017
12:50:37
спасибо

Snusmumriken
15.07.2017
13:04:00
ООП для слабаков? : )
Нет, технически - это и правда так.
Один раз вкурил в концепт - и вот, золотой молоток, которым можно фигачить почти всё что угодно.

Group Butler [beta]
15.07.2017
13:44:01
Добро пожаловать в чат pro.lua, Firestalk! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Azoyan
15.07.2017
13:54:33

Google

Azoyan
15.07.2017
13:54:57
причем тут ООП?
я хочу отвязать перемещение объекта от самого объекта

Snusmumriken
15.07.2017
13:56:38
Чтобы можно было перемещать разнотипные объекты?

Azoyan
15.07.2017
13:58:16
ну да)

Snusmumriken
15.07.2017
15:11:46
Ну это того.. Наследованием?
Объявляем абстрактный класс сущности, имеющей, допустим, координаты и размеры, ну, и заодно пустые методы update/draw, чтобы было.
Пишем к нему метод move.
Наследуем от него всё остальное!
Вот тебе пример проекта с такими сущностями: https://bitbucket.org/MainTomato/tank-o-box/src/61410a4ea6bf8bbd61c0a3b9bfdbbb2f585b100b/data/entity.lua?at=master&fileviewer=file-view-default
Только без метода move, но он тут частично подразумевается через applyCollision : )
Тут же, кстати, неплохой сет моих либ.

Azoyan
15.07.2017
15:20:00
у тебя есть movable объект. Есть функция move которая принимает move(Movable, Destination)
зачем наследование?
не надо переусложнять)
(пока не надо)
но я тебя понял

Philipp
15.07.2017
15:38:48
Я согласен с Лешкой, ООП всегда лучше функцией

Philipp
15.07.2017
15:39:05
Тк позволяет менять движение и его логику для каждого класса отдельно

Snusmumriken
15.07.2017
15:40:11
Ну типа вызвать метод объекта проще, чем искать какую-то конкретную функцию.
А если у тебя будет ещё пять объектов, которые можно будет двигать, но чуть по другому, допустим, им при движении нужно будет ещё что-то делать, шаги считать или двигать составные части? Что, делать пять разных функций: "moveObjFoo", "moveObjBar"?

Admin
ERROR: S client not available

Philipp
15.07.2017
15:41:15
Я первый :3


Snusmumriken
15.07.2017
15:41:42
Ну, ты вообще умничка : )
Ещё бы с мотивацией у тебя не было проблем, то было бы вообще зашибись.
Мы оба забыли уточнить, что мы ещё и имеем доступ к родительскому методу, даже если определили свой. Больше возможностей, например, когда нам просто нужно сделать дополнительные действия, чтобы не копипастить туда-сюда функцию того же движения - в переопределённом методе предка - можно вызвать оригинальный метод предка и сделать ещё что-нибудь.
ООП с наследованием для чайников от Снусмумрика:
Ну, а в ООП -
foo = {}
foo.__index = foo
function foo:new(x, y)
local o = {x = x, y = y}
return setmetatable(o, self)
end
bar = setmetatable({parent = foo}, {__index = foo})
bar.__index = bar
function bar:new(x, y, w, h)
local o = self.parent:new(x, y)
o.w, o.h = w, h
return setmetatable(o, self)
end
foobar = setmetatable({parent = bar}, {__index = bar})
foobar.__index = foobar
function foobar:new(x, y, w, h, z, v)
local o = self.parent:new(x, y, w, h)
o.z, o.v = z, v
return setmetatable(o, self)
end
Проследи, что вызывается в функции
o = self.parent:new(x, y, w, h, z, v)
Там дёргаются функции new начиная от foo:new до foobar:new.
Можешь обозвать не parent а super. Это более питоноподобно и типа "традиционное" название батьки, а ля "суперкласс".

Google

Snusmumriken
15.07.2017
15:45:49
Методы и ключи у потомков вызываются по мере поиска.
Нашли в объекте? Вызвали или выдали.
Не нашли? Поискали у класса. Нашли? Выдали. Нет? Поискали у суперкласса. И т.д, дальше сам разберёшься, тут всё по изичу.
Ну, в результате удобно делать интерфейсы.
Допустим, прописали функцию draw и у суперкласса и у дочернего класса.
Объекты суперкласса будут пользоваться методом draw суперкласса, а дочернего - дочернего. Таким образом, можно не париться с виртуальными классами, а хуярить сразу реальные.
Если внезапно нужен перезаписанный метод суперкласса - можно вызывать как
self.parent.method(self, a, b, c).
Родитель родителя, соответственно, self.parent.parent.
Просто как три копейки, давай осваивай )))

Azoyan
15.07.2017
15:53:56
Спасибо

MrSmeet
15.07.2017
17:12:49
Ребят, интерпритатор lua подскажите топовый
luajit,
?

Snusmumriken
15.07.2017
17:13:00
Ну ясен хрен.
P.S. Сообщения можно редактировать.

MrSmeet
15.07.2017
17:16:28
Ребят, можно писать чисто на луа? Есть пакетники?

Snusmumriken
15.07.2017
17:19:11
Luarocks.
Можно писать чисто на lua, но если тебе нужно что-то специфические (функции ядра, например) - пишешь header и гоняешь любую сишную библиотеку напрямую.
Как альтернатива - ставишь dynasm и катаешь на ассемблере на lua.
https://luapower.com/dynasm
Эти фичи как раз предоставляет luajit.

MrSmeet
15.07.2017
17:20:12

Snusmumriken
15.07.2017
17:20:58
Ой, как будто писать на асме - это так странно ))))

Philipp
15.07.2017
17:22:45

Snusmumriken
15.07.2017
17:23:11
Очень просто, была бы документация к ним. По документации пишется header, и всё, вот тебе ffi.C.foobar.

Philipp
15.07.2017
17:23:35
Я думаю про ffi, я не прав, да?

MrSmeet
15.07.2017
17:24:10

Snusmumriken
15.07.2017
17:24:13
Ты про ffi, ты прав.
И кстати, если есть исходники сишной библиотеки - хедер можно выдрать в полуавтоматическом режиме.

Dika
15.07.2017
17:24:47
интерпрЕтатор

Snusmumriken
15.07.2017
17:25:12
Интерпритатор, от слова "прикольная *штука*!" ))
Корень - "при", остальное - приставки, суффиксы и окончания.

Group Butler [beta]
17.07.2017
07:36:07
Добро пожаловать в чат pro.lua, Ёжик! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.
Добро пожаловать в чат pro.lua, Serge! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.