Lua - Read function from module

1 분 소요

Lua - Read function from module

  • 최근에는 hammerspoon을 이용해서 맥에서 불편했던 사소한 부분들을 수정하고 있습니다. 가령 ctrl + hjkl을 누르면 화살표가 되도록 한다거나, esc를 누르면 자동으로 한영 전환이 되도록 한다거나, 하는 짓들을 구현하고 있습니다. hammerspoon을 사용하려면 lua를 사용해서 코드를 작성해야 하고요.
  • 현재는 전체 코드가 main.lua file 내에 모두 있는데요. 코드가 길어짐에 따라서 코드가 지저분해지고 디버깅이 어려워져서 코드를 분리하려고 합니다. 네, 모듈화한다는 말이죠.
  • 따라서, lua에서는 각 함수를 어떻게 모듈로 처리하는지를 정리합니다.

Do it

  • 메인 코드는 main.lua에 작성하고, 참조하는 함수들은 calculator.lua 파일에 작성하였습니다.

module - calculator.lua

  • calculator.lua를 만들고, 아래와 같이 모듈을 정의해줍니다.
  • 다른 lua code에서 사용되기 위해서는 다음처럼 table 내에 함수가 작성되어야 합니다. 이렇게 쓰고보니, 마치 javascript의 객체와 유사하게 보이네요.
--[[
2022.03.27 - Init
Simple caclulator
--]]

local this_module = {}

function this_module.print_this ()
  print("function: print_this")
end

function this_module.add(a, b)
  print('add function: ', a + b)
  return a + b
end

function this_module.subtract(a, b)
  print('substract function: ', a - b)
  return a - b
end

function this_module.multiply(a, b)
  print('multiply function: ', a * b)
  return a * b
end

return this_module

main.lua

  • main.lua는 다음과 같이 만들고, 앞서 만든 calcuator.lua 파일을 가져옵니다.
  • 가져올 때는 require를 사용하고, file 확장자 명을 사용하지 않습니다.
print("This is main.lua")

local lib = require('calculator')

print(lib.add(3, 4))
print(lib.subtract(3, 4))
print(lib.multiply(3, 4))

Wrap-up

  • 조금 더 파보면 재밌는 부분들이 많을 것 같지만, 일단은 이렇게만 하고 사용하면서 고쳐보도록 합니다. 저는 미리 배우는 것보다는, 필요할 때 배우는 편이 훨씬 도움이 되더라고요.

Reference

댓글남기기