无法理解Lua中的语句逻辑(ESP8266示例)
2016-8-21 12:58:34
收藏:0
阅读:68
评论:1
我在 GitHub 页面上发现了一个用于 NodeMCU 的程序,用于切换 LED:
https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/webap_toggle_pin.lua
为了简化代码以便于理解,我猜测一些变量没有被使用,所以我可以简单地删除这些行。但当我从上传到 ESP8266 的代码中删除这些行时,我的代码停止工作,让我完全惊讶。
有人可以帮助我理解下面摘录中的语句的含义吗:
local _, _, method, path, var...........
据我所知,我们声明了 2 个匿名变量,然后声明了额外的变量 method、path 和 vars,并通过对请求对象进行字符串搜索操作来设置 vars 的值。
但由于我们不使用匿名变量和 method(它们将为 nil),因此 path 也将被评估为 nil,因为 method 是 nil。因此,我删除了匿名变量、method 和 path 变量,并上传了代码。当我尝试浏览由 ESP 提供的页面时,它会抛出错误。
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
错误是
PANIC: unprotected error in call to Lua API (init.lua:27: attempt to concatenate global '_off' (a nil value))
帮助我理解程序的完整含义。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
_并不是一个匿名变量;它是一个普通的变量,但是有一种惯例,使用_表示你在代码中忽略的变量。在这种情况下,
string.find返回第一个匹配的开始和结束位置,以及所有的捕获组(那些括号中的组),因此作者只需要捕获的位置和开始/结束位置。该片段首先检查 URL 是否符合
method URL?parameters格式,并获取方法、URL 和参数。第二个检查是针对method URL的(因为它不会被第一个模式匹配到)。如果
vars值存在,则将其解析为键/值对,作为查询字符串。