小编Mik*_*yla的帖子

使用局部变量作为参数调用匿名函数

我有一个创建对象的函数(在本例中是一个Hammerspoon Notify对象),我想将此对象作为参数传递给一个匿名函数,该函数本身就是一个函数调用的参数.

这是一个非常复杂的解释,但我认为一个例子非常清楚.

function main()
    local n = hs.notify(...)
    print(n)          -- `hs.notify: Title (0x7fbd2b5318f8)`
    hs.timer.doAfter(1, function(n)
        print(n)      -- nil
        n:withdraw()  -- error: attempt to index a nil value (local 'n')
    end)
end
Run Code Online (Sandbox Code Playgroud)

这个输出是n第一次打印(hs.notify: Title (0x7fbd2b5318f8)),但是nil第二次,在匿名函数内,它会抛出一个错误:attempt to index a nil value (local 'n').

这是有道理的,因为我从来没有真正传递它.有没有办法传递它?电话的签名hs.timer.doAfter是:hs.timer.doAfter(sec, fn) -> timer(http://www.hammerspoon.org/docs/hs.timer.html#doAfter)

lua callback hammerspoon

5
推荐指数
1
解决办法
931
查看次数

标签 统计

callback ×1

hammerspoon ×1

lua ×1