首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua Hammerspoon:将hs.window.focusedWindow()赋值给变量时为空

Lua Hammerspoon:将hs.window.focusedWindow()赋值给变量时为空
EN

Stack Overflow用户
提问于 2016-01-12 20:35:10
回答 1查看 686关注 0票数 9

我在osx上使用一个名为hammerspoon的自动化软件。

当我在hammerspoon的控制台中使用以下代码时,win为空:

代码语言:javascript
复制
> local win = hs.window.focusedWindow()
> win
nil

但实际上该函数返回了一些值:

代码语言:javascript
复制
> hs.window.focusedWindow()
hs.window: Hammerspoon Console (0x60000025f798)

这种奇怪的行为破坏了所有窗口移动/调整大小的功能,例如:

代码语言:javascript
复制
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "H", function()
    local win = hs.window.focusedWindow()
    local f = win:frame()

    f.x = f.x - 10
    win:setFrame(f)
end)

Hammerspoon给出了这个错误:

代码语言:javascript
复制
/Users/mertnuhoglu/.hammerspoon/init.lua:6: attempt to index a nil value (local 'win')
stack traceback:
    /Users/mertnuhoglu/.hammerspoon/init.lua:6: in function </Users/mertnuhoglu/.hammerspoon/init.lua:4>
stack traceback:

我不知道这个问题是由我的电脑还是其他什么原因引起的。

我有osx yosemite,版本10.10.5和hammerspoon 0.9.43。

更新:

我找到了这个错误的解决方案。这是由于osx的隐私设置造成的。

解决方案:

代码语言:javascript
复制
Prefences > Security > Privacy > Allow Apps: Hammerspoon

但我仍然不明白,如果没有赋值给变量,为什么hs.window.focusedWindow()会返回一些东西,而当赋值给变量时,它会返回nil

EN

回答 1

Stack Overflow用户

发布于 2017-01-02 19:51:21

Hammerspoon将每一行作为它自己的块来执行,因此局部变量只在该块中可用,并且一旦该块被执行就不再可用。

如果你想在区块执行后访问变量,将它们设置为全局的,即删除'local‘关键字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34743870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档