Lua: - Как создать переменную, которая может иметь смешанные типы данных, и передать ее в качестве аргумента

У меня есть требование передавать данные в аргументах.

Который может быть

      1) A Single String -> 'StringData'
2) Multiple Strings -> 'StringData0', 'StringData1', 'StringData2'
3) Single Numeric data -> 10 OR 30.22
4) Multiple Numeric data -> 10, 20, 30 OR 30.22, 12.01, 1.4  
5) Mix of String, bool, int, double -> 'StringData', true, 10, 45.33, false

Is there any way that I can create a Variable that can accept any of the above possibility



ui.InvokeFunction(parameter1, parameter2, ArgumentList)

Я хочу заполнить данные в переменной ArgumentList, которая может быть любой из 5 вышеперечисленных возможностей. Я не нашел способа вставить несколько типов данных в ArgumentList

2 ответа

Я не вижу никакой проблемы, так как вы можете передать любое значение в Lua в качестве параметра и проверить его тип, используя typeфункция. Кроме того, если вам нужно передать несколько значений, вы можете передать таблицу (которая может иметь значения разных типов).

      ArgumentList = {'StringData', true, 10, 45.33, false}
-- type(ArgumentList[1]) == 'string'
-- type(ArgumentList[2]) == 'boolean'
-- and so on...

Я не эксперт в lua, но я думаю, что делать что-то вроде:

      

Argument_List = {
  1 = {
   boolean = true
   string = ""
   other = 69
   table = nil
  }
}

valid_types = {
 "string" = true
 "boolean" = true
 "number" = false
 "table" = false
}

filtered_list = {}

for _,v in pairs(Argument_List) do 
 for x in v._ do 
  if valid_types[type(x)] then 
   table.insert(filtered_list._, {type(x) = valid_types[type(x)]})
  else
   table.insert(filtered_list._, {type(x) = false})
  end
 end
end

Я предполагаю, что это будет неэффективный способ того, что вам нужно, но, надеюсь, это помогло.

Другие вопросы по тегам