본문 바로가기

Lua

Lua#10 Module

이미 Roblox에서도 ModuleScript라는 것이 있어서 이런 module이 익숙할 수 있을거 같아요. 
module은 어떤 함수들을 미리 만들어 놓고, 불러서 사용할 수 있어요. 
즉, module_name.lua 라는 파일에  table을 하나 만들어 return 합니다.

사용하는 쪽에서는 require 라는 명령어를 이용해서 불러서 사용합니다. 

mymath.lua 파일

local mymath =  {}

function mymath.add(a,b)
   print(a+b)
end

function mymath.sub(a,b)
   print(a-b)
end

function mymath.mul(a,b)
   print(a*b)
end

function mymath.div(a,b)
   print(a/b)
end

return mymath	

이렇게 미리 함수를 정의 해 놓고, 그 함수들의 table인 mymath를 return 합니다. 
사용하는 쪽에서는

mymathmodule = require("mymath")
mymathmodule.add(10,20)
mymathmodule.sub(30,20)
mymathmodule.mul(10,20)
mymathmodule.div(30,20)

이렇게 불러서 사용합니다. 

Roblox에서는
보통 ServerStorage에 module script를 생성해서 불러 사용합니다. 
module script를 생성하고, 처음엔 table 을 선언하고, return을 하게 만든다음 그 사이에 함수나 변수들을 정의하죠

local MoneyManager = {}
 
-- Usable only in the module script
local questReward = 100
 
-- Usable in other scripts
function MoneyManager.finishQuest(player)
	player.Money = player.Money + questReward
end
 
return MoneyManager

그러면 다른 script에서 

local MoneyManager = require(ServerStorage.ModuleScript)

이렇게 불러서 사용할 수 있지요.

뭔가를 만들때 같은 기능을 반복해서 만들면 나중에 수정할 때도 찾아서 모두 고쳐야 해서, 공통된 기능은 모두 한군데 모아두면 편하죠. 그리고 더 좋은건 남이 잘 만들어 논 module들을 가져다가 사용하는 것도 절대 나쁜 것이 아닙니다. 다른 사람이 만든 것들을 잘 보세요. 
큰 도움이 된답니다. 

'Lua' 카테고리의 다른 글

Lua#9 Table과 iterator  (0) 2020.08.25
Lua#8 : Array  (0) 2020.08.20
Lua#7 : String  (0) 2020.08.20
Lua#6 : 함수  (0) 2020.08.12
Lua#5 : 조건  (0) 2020.08.11