Size: a a a

2021 October 30

RM

Roy Mustang in pro.lua
Не, так прикол в том, что я хочу создать именно объект в cloaksystem.lua и вернуть его
источник

RM

Roy Mustang in pro.lua
А не вернуть для того чтобы создать
источник

S

Snusmumriken in pro.lua
А зачем? Он уникален?
источник

RM

Roy Mustang in pro.lua
Да
источник

S

Snusmumriken in pro.lua
Ну тогда возвращай объект, сойдёт за синглтон. Луа кеширует результат require, поэтому синглтон будет везде одним и тем же буквально.
источник

RM

Roy Mustang in pro.lua
Я же говорю, у нас щас один скрипт может срать N функциями в глобал спейс
источник

RM

Roy Mustang in pro.lua
Поэтому я предложил подход - все функции строго локал, но если надо что-то тащить наружу, то только через ObjectSystem и require
источник

S

Snusmumriken in pro.lua
local a = require"cloak"
a.foo = 10

local b = require"cloak"
print(b.foo) --> 10 потому что мы выставили выше

Ну типа синглтон.
источник

RM

Roy Mustang in pro.lua
То есть, такой подход хороший да?
источник

S

Snusmumriken in pro.lua
Сойдёт. Под пивас ))
источник

RM

Roy Mustang in pro.lua
А вот что касается 2 вопроса?
источник

RM

Roy Mustang in pro.lua
Там вопрос касается того, нужно ли запихивать в эти объекты все данные или же пихать только те, что собираемся наружу вытащить через require
источник

RM

Roy Mustang in pro.lua
или вообще без разницы
источник

S

Snusmumriken in pro.lua
2) Дело в том, что сейчас коллега все что юзает в скрипте луа (в том где этот объект модуля создается), он помещает короче все данные в этот объект.

Сойдёт 2.0. Если вы планируете мастурбировать на "приватные поля которые никто не может даже увидеть вне модуля" — надо выделять в локальную часть, если вам пофигу на это — нормась.
источник

RM

Roy Mustang in pro.lua
Наш луашник короче написал примерно такой код
// ObjectSystem.lua
local msgFunction

local Object = {
   Msg = msgFunction
}

msgFunction = function()
  print("Hello")
end

return Object

// TestSystem.lua
local ObjectSystem = requires('ObjectSystem')

local foo()
  ObjectSystem:Msg()
end
источник

RM

Roy Mustang in pro.lua
Прикол в том, что у него msg() не вызывается из ObjectSystem в TestSystem.lua
источник

RM

Roy Mustang in pro.lua
хотя сам foo вызывается из С++ кода
источник

RM

Roy Mustang in pro.lua
С чем это может быть связано?
источник

RM

Roy Mustang in pro.lua
Он говорит Msg является nil'ом почему то, а вот сам ObjectSystem нет
источник

RM

Roy Mustang in pro.lua
Я сначала подумал, что может нельзя вызывать функцию через : но вроде как тоже самое что через точку
источник