2015-10-13 2 views
0

Я имею следующую структуру пакетаLua: Загрузочные модули betwen подпакетов

--main.lua 
--module1.lua 
--utils/ 
    |----a.lua 
    |----b.lua 
--data/ 
    |----c.lua 
    |----d.lua 

от module1.lua Я знаю, что я могу легко назвать utils.a и data.d, например. А также, что в utils/a.lua я могу ссылаться на utils/b.lua, делая что-то вроде

--a.lua 
local current_package = (...):match("(.-)[^%.]+$") 
require(current_package .. 'b') 

Но как я требую utils.a от data.c?

Благодаря

ответ

1

Вы можете использовать

local parent_package = (...):match("^(.-)[^.]+%.[^.]+$") 
require(parent_package .. "utils.a") 

, если вы считаете, что ваша данный пакет структура может быть частью более крупной структурой пакета. В противном случае вы должны просто использовать абсолютные пути модулей из любого места:

require("utils.a") 
+0

будет utils.a работа изнутри данные пакета? – Aly

+0

Если 'require (" utils.a ")' работает из 'module1.lua' или' main.lua', он будет работать из любой точки - в том числе из 'data/c.lua',' data/d. lua' и/или 'utils/b.lua'. – siffiejoe

Смежные вопросы