Справка по конфигурации конкретного домена Lua - PullRequest
3 голосов
/ 20 октября 2010

У меня есть конфигурация определения элемента данных 5000, которую мы ожидаем создать следующим образом:

-- Name of the device
VARIABLE Name { 
   type=Float,
   length=20,
   <<few more definition here>>
}

-- The device running elapsed time since its last boot
VARIABLE BootTime {
   type=Integer,       
   <<few more definition here>>
}

Я буду считывать значение «Name», «BootTime» с устройства, использующего другой протокол связи, гдемы используем определенное выше свойство.

Я хочу, чтобы переменная также имела свойства для функций pre_processor и post_processor.

  1. Как определить структуру, подобную этой, в Lua?Если это strcuture не возможно, то, что структура шкафа возможна в Lua

  2. Я хочу перегрузить оператор для определения этой переменной, чтобы я мог сделать,

    Я могунастройте BootTime = 23456789 или выполните арифметику, например BootTime + 100 (миллисекунды), или сравните, например, если BootTime> 23456789, выполните что-то

1 Ответ

2 голосов
/ 20 октября 2010

Если вы можете отказаться от ключевого слова VARIABLE, тогда это код Lua, и вам нужен только небольшой вспомогательный код (немного __index волшебства метаметода).

Integer="Integer"
setmetatable(_G,
        { __index = function(t,n)
                        return function (x) _G[n]=x.value end
                end })
BootTime {
        type=Integer,
        value=10000
}
print(BootTime+2345)

Если вы хотите сохранить ключевое слово VARIABLE, то синтаксис, который вы дали, больше не является простым Lua, но если вы можете жить с VARIABLE.BootTime или VARIABLE"BootTime" или VARIABLE[BootTime], тогда это простой Lua, и его можно сделать работать с подходящими метаметодами.

...