【问题标题】:Lua - Dynamically generated look up table & valuesLua - 动态生成的查找表和值
【发布时间】:2022-01-09 10:15:57
【问题描述】:

我正在尝试创建一个动态填充我拥有的一组开关的开/关状态的表。以下是我卡住​​的地方,因为它总是什么都不返回/零? ..

-- retrieved http.request status of 4 binary switches 
local P61v = 1
local P62v = 0
local P63v = 1
local P64v = 0

— following table should allow us to look up the status of all associated light by their  plug names P61, P62, P63 etc.

local LookupTable = {
    P61 = P61v,
    P62 = P62v,
    P63 = P63v,
    P64 = P64v
}
local x = LookupTable[P62]
print(x)

【问题讨论】:

    标签: lua


    【解决方案1】:

    LookupTable[P62] 中,表达式P62 被计算为nil,导致LookupTable[nil] 解析为nil

    你要找的要么是

    LookupTable.P62
    -- or --
    LookupTable['P62']
    

    这是表达同一事物的等效方式。

    【讨论】:

    • 非常感谢@Oka - 当你强调这一点时似乎很明显,遗憾的是当时我看不到它..
    【解决方案2】:

    我创建了一个定义这两个值的脚本,这就是我最终得到的......

    local PowerResponse = "P61=0,P62=1,P63=0,P64=0"
    local P61, _, P61v, P62, _, P62v, P63, _, P63v, P64, _, P64v = PowerResponse:match("(%w*)(=)(%d),(%w*)(=)(%d),(%w*)(=)(%d),(%w*)(=)(%d)")
    local PowerStatusTable = {
            P61 = P61v,
            P62 = P62v,
            P63 = P63v,
            P64 = P64v
            }
    --local x = PowerStatusTable[P62]
    for k, v in pairs(PowerStatusTable) do
        luup.variable_set("urn:upnp-net:serviceId:IPPower1", k, v,deviceID)
    end
    

    【讨论】:

      猜你喜欢
      • 2013-10-24
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      相关资源
      最近更新 更多