Одна из программы я наткнулся на GitHub страницу для NodeMCU чтобы тумблер СИД был:не могу понять логику заявление в Lua (ESP8266 образца)
https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/webap_toggle_pin.lua
Чтобы упростить код я понял, что некоторые переменные не используются, и я мог просто удалить эти строки. Но, к моему большому удивлению, мой код переставал работать, когда я удалял эти строки из кода, который я загрузил на свой ESP8266.
Может кто-то пожалуйста, помогите мне выяснить смысл следующего высказывания в приведенном ниже фрагменте кода:
местные _, _, метод, путь, вар ...........
Как я понимаю, мы объявляем 2 анонимные переменные, а затем дополнительную переменную, называемую методом, path и vars, и устанавливаем значение vars, выполняя операцию поиска строк по объекту запроса.
Но поскольку мы не используем анонимные переменные и метод, который будет равен нулю, и, следовательно, путь будет также оцениваться как nil, так как метод равен нулю. Поэтому я удалил анонимные переменные, методы и переменные пути и загрузил код. Когда я пытаюсь просмотреть страницу, обслуживаемую 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: незащищенный ошибка в вызове Lua API (init.lua: 27: попытка объединить глобальный '_off' (нилъ значение))
Помогите мне понять, полный смысл программы.
Поскольку мой формат url по умолчанию (в тестовом коде) имеет форму 192.168.1.2/?pin=OFF или 192.168.1.2/?pin=ON, я считаю, что методы и переменные пути не будут использоваться. Поэтому я удалил их из кода и загрузил в ESP. Когда я пытаюсь получить доступ к странице, это не работает, и я не могу включить или выключить ПИН. Так нужны переменные метода и пути (даже если я их не оцениваю)? – user869375
Вы обновили шаблон? Вам нужно удалить скобки вокруг первой и второй группы, если вы их не собираете: 'local _, _, vars = string.find (запрос,« [A-Z] +. +? (. +) HTTP »)'. –
спасибо Пол. Я теперь использую код как есть, но ваше объяснение помогло мне понять шаблон. – user869375