基本上,我需要从中提取数据的几个设备。当温度测量值低于或超过设定限制时,我会收到多封电子邮件。我希望有一个for
循环,将所有当前设备状态包含在一封电子邮件中或超出限制。
body = for device_name, 1 do
device_name++ -- I get error here because unexpected symbol near 'for'
"Device Name: " ..device_name.. "\nDevice Location: " ..device_location..
"\n--------------------------------------------------------------" ..
"\nCurrent Temperature: " ..temperature.." F".. "\nTemperature Limit: ("..
t_under_limit.. "-" ..t_over_limit.. " F)" .."\n\nCurrent Humidity Level: " ..
humidity .. "%".. "\nHumidity Limit: (" .. h_under_limit.. "-" ..h_over_limit.. "%)"
.. "\n\n-------Time Recorded at: " ..os.date().. "-------"})
end, -- end for
答案 0 :(得分:2)
lua中没有变量++语法。你需要做什么
variable = variable + 1
另外,您不能将一些for循环结构赋给变量。所以这句话
body = for device_name, 1, ...
无效。也许你的意思是......
local body = ""
for device_name = 1, 1
device_name = device_name + 1
body = body.. "my custom message stuff here"
end
答案 1 :(得分:1)
如前所述,Lua中没有++
运算符。此外,for
循环的语法与您编写的语法不同。
我想补充一点,之后的大连接使用string.format
会更具可读性。这是一个代码的增强版本,其形式是一个函数,在输入中使用表设备参数,每个元素都是一个子表:
local report_model = [[
Device Name: %s
Device Location: %s
--------------------------------------------------------------
Current Temperature: %d °F
Temperature Limit: (%d-%d °F)
Current Humidity Level: %d %%
Humidity Limit: (%d-%d %%)
-------Time Recorded at: %s-------]]
function temp_report(devices)
local report = {}
for i=1,#devices do
local d = devices[i]
report[i] = report_model:format(d.name, d.location,
d.temperature, d.t_under_limit, d.t_over_limit,
d.humidity, d.h_under_limit, d.h_over_limit,
os.date())
end
return table.concat(report)
end