在电子邮件lua脚本的主体内循环

时间:2012-10-18 17:26:03

标签: email for-loop lua

基本上,我需要从中提取数据的几个设备。当温度测量值低于或超过设定限制时,我会收到多封电子邮件。我希望有一个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

2 个答案:

答案 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