我有一个创建对象的函数(在本例中为 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
的输出是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)