gpt4 book ai didi

Lua忽略范围变量

转载 作者:行者123 更新时间:2023-12-04 13:42:16 24 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但是,我不知道发生了什么。

我有一个获取谷歌时间的简单脚本,我需要将它设置为 time 全局变量。因此,在 receive 事件中,我打印了获取的时间并且它正常工作。

问题是变量 time 在事件外部调用时总是为空。这是代码:

-- test.lua
time = ""

function getTime()
conn = net.createConnection(net.TCP, 0)

conn:connect(80,'google.com')
conn:on("connection", function(conn, payload)
conn:send("HEAD / HTTP/1.1\r\n"..
"Host: google.com\r\n"..
"Accept: */*\r\n"..
"User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"..
"\r\n\r\n"
)
end)

conn:on("receive", function(conn, payload)
conn:close()
time = string.sub(payload,string.find(payload,"Date: ")
+6,string.find(payload,"Date: ")+35)
end)
print("testing: " .. time) -- WORKS!
end

getTime()
print("variable: ".. time)

这是我调用该函数的方式(使用 nodemcu-uploader 终端):

➜  test nu terminal
--- Miniterm on /dev/cu.wchusbserial1410 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

> dofile('lib/test.lua')
variable:
> testing: Sat, 20 May 2017 01:37:35 GMT

任何帮助将不胜感激!谢谢

最佳答案

看起来范围没问题。检查输出打印的顺序。

conn:connectcon:on 采用函数,因为它们是异步的。 getTime() 只是在它们被调用之前返回。

关于Lua忽略范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44081076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com