我可以将'init.lua'分离到Hammerspoon中的不同组件吗?

我可以将'init.lua'分离到Hammerspoon中的不同组件吗?,lua,hammerspoon,Lua,Hammerspoon,我想分离Hammerspoon中使用的init.lua脚本,以增强可读性和可维护性 因此,它看起来如下所示: 初始化lua AppWatcher.lua WiFiWatcher.lua 键映射 然后从init.lua中读取这些文件并激活观察者 然而,似乎没有定义这样的函数(尽管我可能遗漏了它)。是否可以像Hammerspoon中那样分离逻辑?是的,您可以使用 如果将Lua文件放入~/.hammerspoon/,则可以使用require('modulename')加载它们。例如,如果您有以下模

我想分离Hammerspoon中使用的
init.lua
脚本,以增强可读性和可维护性

因此,它看起来如下所示:

  • 初始化lua
  • AppWatcher.lua
  • WiFiWatcher.lua
  • 键映射
然后从
init.lua
中读取这些文件并激活观察者


然而,似乎没有定义这样的函数(尽管我可能遗漏了它)。是否可以像Hammerspoon中那样分离逻辑?

是的,您可以使用

如果将Lua文件放入
~/.hammerspoon/
,则可以使用
require('modulename')
加载它们。例如,如果您有以下模块:

  • ~/.hammerspoon/AppWatcher.lua
  • ~/.hammerspoon/WiFiWatcher.lua
  • ~/.hammerspoon/KeyRemap.lua
然后您可以从
~/.hammerspoon/init.lua
加载它们,如下所示:

local AppWatcher  = require('AppWatcher')
local WiFiWatcher = require('WiFiWatcher')
local KeyRemap    = require('KeyRemap')
您可以加载任何Lua模块,只要它们出现在中。要查看您可以使用的目录,请查看HammerSpoon的。这将引用中定义的默认Lua package.path

如果要将Lua模块放在package.path中未包含的目录中,可以通过将它们添加到
Lua\u path\u 5\u 3
Lua\u path
环境变量来实现


免责声明:我从Hammerspoon的源代码中获得了这些信息,但我没有Mac电脑,所以我还没有测试过它。如果对您不起作用,请告诉我。:)

通常,您可以使用
require()
dofile()
执行此操作。不确定这些在您的环境中是否可用。谢谢。成功了。似乎
require
函数的返回值是一个布尔值
hs.alert.show(AppWatcher)
show
true
。返回值为模块返回的值。通常是一个包含模块正在导出的所有函数的表。这个特定的模块必须在成功时返回true,在失败时返回false,或者类似的东西。如果您有一个勺子,并且想要将它分成多个文件,该怎么办?主spoon/init.lua文件能否包含其他文件?只要您尝试加载的模块位于lua的package.path中,您就应该能够从任何地方加载它们。(不过,我也没有Mac电脑,所以我无法实际测试。)