Lua 变量初始化不快,无法打印?嵌入式 ESP8266

我有一个EPS8226,我上传了一个 main.lua 文件和一些其他配置。当我在终端中使用dofile()运行main.lua时,回调函数的print仅打印“sensorId”而没有“sent 0”。然而,如果我再次运行main.lua,或我在之前print()一些东西(在调用回调的'function()'或回调本身内部),它会正确打印“sensorId sent 0”。如果我不使用local变量也可以。\n\n``` function registerReaders() for key, value in pairs(sensorConfig.data) do gpio.mode(value.pin, gpio.INPUT) value.timer:alarm(value.polling, tmr.ALARM_AUTO, function() callbacks.sendData(sensorConfig.sensorId[key]) end) tmr.create():alarm(1000, tmr.ALARM_SINGLE, function() callbacks.sendData(sensorConfig.sensorId[key]) end) end end


打印“\[sensorId\_value\]”

callbacks.sendData = function(sensorId) local data = 1 print(sensorId .. " sent " .. data) end


正常打印(“OK”然后“\[sensorId\_value\] sent 0”)

callbacks.sendData = function(sensorId) local data = 1 print("OK") print(sensorId .. " sent " .. data) end


正常打印(“\[sensorId\_value\] sent 1”)

callbacks.sendData = function(sensorId) print(sensorId .. " sent 0") end

```

点赞
用户1241224
用户1241224

在所有的例子中,sensorId 都是一个变量,而不是一个字符串,所以除非 sensorId = "sensorId",否则它们中的任何一个都不应该输出 "sensorId sent 0"。

在第一个例子中(实际上是所有例子),"sent" 是一个字面量,无论 data 的值如何,它都应该输出。

难道第二个例子不应该输出 "[...] sent 1" 吗?

尝试使用除 data 以外的变量名称,可能存在某些前向值的混淆。

2018-06-09 22:48:29