按照https://nodemcu.readthedocs.io/en/release/modules/tmr/#tobjcreate
上的说明我试图在我的Lua脚本中创建一个计时器,它将每10秒执行一个函数。脚本中的示例计时器:
mytimer = tmr.create
mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)
mytimer:start()
当我执行我的脚本,我得到一个语法错误:
'=' expected near 'mytimer'
我在这里做错了什么?
感谢与其在这里提问,不如将你的代码与你链接的文档中的代码示例进行比较:
local mytimer = tmr.create()
mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)
mytimer:start()
示例:local mytimer = tmr.create()
Youmytimer = tmr.create
你这里漏掉了呼叫操作符。不让mytimer
当地实践但不会给你一个错误。
示例:mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)
你:mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)
my_function
是什么。end不属于这里,除非你在这里定义了一个函数。那么它应该像例子中那样。如果没有end
,如果my_function()
会返回一个函数值,您的版本将是ok的。
function (t) print("expired"); t:unregister() end
定义一个匿名函数。这将解析为一个函数值,该函数值用作寄存器函数的回调形参的实参。
你也可以这样做:
local callback = function (t) print("expired"); t:unregister() end
mytimer:register(5000, tmr.ALARM_SINGLE, callback)
其他内容在手册中有说明。