我需要创建一个结构。该结构必须包含一个“布尔条件”数组。像这样的东西:
function ReturnStructure ()
local structure = {
{A < 10},
{B == "smth"},
{FunctionReturnsTrueOrFalse(params)},
--...
}
return structure
end
structure = ReturnStructure()
print(structure[1][1]) -- prints true or false depending on the value of A
实际上这些表包含真假,而不是条件,因为当我们调用函数 ReturnStructure 并创建本地表结构时,字段中的所有条件都会被执行。我想创建一个结构,其字段将不包含布尔值,而是我可以执行的东西(当我想做的时候)并获得一个布尔值。我可以通过使用匿名函数来实现这一点:
function ReturnStructure ()
local structure = {
{function() return A < 10 end},
{function() return B == "smth" end},
{FunctionReturnsTrueOrFalse, params}, -- I don't call function in this line, a just put its adress and parameters to table.
--...
}
return structure
end
structure = ReturnStructure()
print(structure[1][1]) -- prints function: 0x109bdd0
print(structure[1][1]()) -- prints true or false. I execute condition in this string.
所以,有一个代码可以按我的意愿工作,但它看起来很丑陋。我想听听一些关于如何创建更简单、更漂亮的表格的想法,而无需function () return ...
在每个领域都打印。我认为我应该使用简单的 OOP 实现将我的结构创建为对象,但我不知道该怎么做。我也很乐意得到一些方法、实现、文章等的参考,这可以帮助我找到一些想法。