我可以将'init.lua'分离到Hammerspoon中的不同组件吗?
我想分离Hammerspoon中使用的我可以将'init.lua'分离到Hammerspoon中的不同组件吗?,lua,hammerspoon,Lua,Hammerspoon,我想分离Hammerspoon中使用的init.lua脚本,以增强可读性和可维护性 因此,它看起来如下所示: 初始化lua AppWatcher.lua WiFiWatcher.lua 键映射 然后从init.lua中读取这些文件并激活观察者 然而,似乎没有定义这样的函数(尽管我可能遗漏了它)。是否可以像Hammerspoon中那样分离逻辑?是的,您可以使用 如果将Lua文件放入~/.hammerspoon/,则可以使用require('modulename')加载它们。例如,如果您有以下模
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)
showtrue
。返回值为模块返回的值。通常是一个包含模块正在导出的所有函数的表。这个特定的模块必须在成功时返回true,在失败时返回false,或者类似的东西。如果您有一个勺子,并且想要将它分成多个文件,该怎么办?主spoon/init.lua文件能否包含其他文件?只要您尝试加载的模块位于lua的package.path中,您就应该能够从任何地方加载它们。(不过,我也没有Mac电脑,所以我无法实际测试。)