Size: a a a

2019 September 01

AN

Alex Novi in pro.lua
тююю export default a )))
источник

A

Andrey in pro.lua
не ну я вначале определю например
node.lua
local A={}
function A:bar1()
end
...
return A

а когда буду библиотеку дергать что то типа
local NodeLib=require("node")
вначале
ей же пофиг что там было A
источник

AN

Alex Novi in pro.lua
просто я за понятные название , всеголишь то ))
источник

AN

Alex Novi in pro.lua
так вот к сути
источник

AN

Alex Novi in pro.lua
Вопрос как меньше , вариант написал . Удобо читаем или нет дело третье ))
Тут вопрос же был в кол-вах символов
источник

A

Andrey in pro.lua
да. а то загромождает
источник

AN

Alex Novi in pro.lua
такой синтаксис что поделать ))
источник

AN

Alex Novi in pro.lua
хотя
источник

AN

Alex Novi in pro.lua
-return {
 bar1 = function() return 1 end,
 bar2 = function(self) return self.bar1 end,
 BBBBB = function() return 'some text' end,
}
источник

AN

Alex Novi in pro.lua
при условии что
источник

AN

Alex Novi in pro.lua
local node require "node"
node.bar2(someElse) не будит ни когда так написан ибо будет ошибка
node:bar2(); только так все отработает
источник

AN

Alex Novi in pro.lua
local function fullName (name)
 return function (fio)
   print(table.concat({name, fio}, ' '))
 end
end

fullName"Alex""Novi"
источник

AN

Alex Novi in pro.lua
вот кстати что называется сахаром ))
источник

6

6 :) in pro.lua
кончилось...
источник

S

Snusmumriken in pro.lua
Alex Novi
Это жаваскрипт со стрелочными функциями. Очень красиво, но стрелочные функции вводили не для сокращения методов, а для лямбд. То есть, функций которые подаются аргументами в другие функции (там такие сокращения оправданы), и если ты почитаешь стайлгайды, то описывать методы объектов в жаваскрипте стрелочными функциями это, помнится, муветон, ибо их немножко сложнее визуально выделять. Но если ты всё таки хочешь сверхкраткого синтаксиса в луях — мунскрипт в помощь, оно собирается в луа.
https://moonscript.org/
источник

S

Snusmumriken in pro.lua
А если прям вот так вот задалбывает каждый раз писать
functon Class:method(foo, bar)
 ...
end

Напиши сниппет для этого дела, и копипасть. Полная форма очень способствует читаемости.
источник

S

Snusmumriken in pro.lua
Гипотетически (ещё раз повторяю, гипотетически), можно извратиться с setfenv или аналогом. Типа мы переключаем энвайрнмент под текущий класс, и все переменные которые мы объявляем начинают относиться к нему. Но это будет жутко : )

Типа:
local _G = _G
function DEFINE_CLASS(t)
 t = setmetatable(t or {}, {__index = _G})
 setfenv(t)
end

function ENDEFINE_CLASS()
 setfenv(_G)
end

local Class = {}
Class.__index = Class
DEFINE_CLASS(Class)

function new(self, x, y)
 local o = setmetatable({}, self)
 o.x, o.y = x, y
 return o
end

function area(self)
 return self.x * self.y
end

ENDEFINE_CLASS()


local obj = Class:new(10, 20)
print(obj:area()) --> 200

Я не тестировал, может я что-то не понимаю, но есть шанс что что-то подобное можно замутить. Правда, между lua5.1 и 5.2 есть различия в том числе в наличии setfenv, но мб получится сделать аналог. И сама затея ужасная, но я хочу попробовать.
источник

ШТ

Шмель Тяжеловес in pro.lua
Snusmumriken
Гипотетически (ещё раз повторяю, гипотетически), можно извратиться с setfenv или аналогом. Типа мы переключаем энвайрнмент под текущий класс, и все переменные которые мы объявляем начинают относиться к нему. Но это будет жутко : )

Типа:
local _G = _G
function DEFINE_CLASS(t)
 t = setmetatable(t or {}, {__index = _G})
 setfenv(t)
end

function ENDEFINE_CLASS()
 setfenv(_G)
end

local Class = {}
Class.__index = Class
DEFINE_CLASS(Class)

function new(self, x, y)
 local o = setmetatable({}, self)
 o.x, o.y = x, y
 return o
end

function area(self)
 return self.x * self.y
end

ENDEFINE_CLASS()


local obj = Class:new(10, 20)
print(obj:area()) --> 200

Я не тестировал, может я что-то не понимаю, но есть шанс что что-то подобное можно замутить. Правда, между lua5.1 и 5.2 есть различия в том числе в наличии setfenv, но мб получится сделать аналог. И сама затея ужасная, но я хочу попробовать.
Если это работает, то не хватает подсветки кода в редакторе другим цветом между DEFINE_CLASS и ENDEFINE_CLAS
источник
2019 September 02

IA

Ivan Azoyan in pro.lua
20
источник

I

Igor725 in pro.lua
Всем привет, есть такой вопрос, он с C API связан по большей части, есть у меня lightuserdata, к ней привязана метатаблица, таких юзердат у меня много, разных типов, так вот, в чём суть, мне нужно определить точно что это за юзердата была передана в функцию.
Вызываю я, к примеру, из под Lua cfgStore:purge() всё хорошо, только вот проблема в том, что в функции :purge() на стороне Си у меня нет проверки правильная ли юзердата пришла, так что если я вызову например config.purge(client), где client - уже поинтер на другую структуру другого типа, функция всё равно продолжает выполняться, а по скольу поинтер совершенно на другую структуру по типу вся программа весело крашится.
P.S. luaL_checkudata(...) работает, как выяснилось, только с обычной userdata, которая выделяется самой машиной Lua, с lightuserdata не работает
источник