gpt4 book ai didi

卢阿 |仅表参数的白名单

转载 作者:行者123 更新时间:2023-12-02 09:09:16 26 4
gpt4 key购买 nike

我正在尝试创建允许的参数的白名单,以便表中提供的任何不在我的白名单表中的参数都将从参数表中删除。

local args = {
"99",
"lollypop",
"tornado",
"catid",
"CATID",
"filter_mediaType",
"one",
"10",
}

local args_whitelist = {
"beforeafter",
"catid",
"childforums",
"display",
"element_id",
"element_type",
"exactname",
"filter_mediaType",
"filter_order",
"filter_order_Dir",
"filter_search",
"filter_tag",
"format",
"id",
"Itemid",
"layout",
"limit",
"limitstart",
"messageid",
"more",
"option",
"order",
"ordering",
"quality",
"query",
"recently",
"recip",
"reply_id",
"return",
"searchdate",
"searchf",
"searchphrase",
"searchuser",
"searchword",
"sortby",
"start",
"task",
"tmpl",
"token",
"view",
"component",
"path",
"extension"
}

--[[
Do something here to eliminate and remove unwanted arguments from table
]]
--args[key] = nil --remove the argument from the args table

print(args) --[[ Output i want based of my whitelist of allowed arguments only

catid
filter_mediaType

]]

如何让我的代码根据我的白名单表检查 args 表,然后运行删除函数以从 args 表中删除垃圾参数。

最佳答案

我建议更改您的白名单以进行更简单的检查。正如 Nicol Bolas 所指出的,这可以通过在运行时反转表来实现快速检查和易于维护。

反转表会用字符串索引的数字填充whitelist表,从而允许将 if 语句检查为 args 值的简单索引。

然后,您可以循环遍历args列表并检查arg是否在白名单上。如果它出现在白名单上,则将该值添加到新列表中,我将在我的示例中使用approved。检查完所有 args 后,您可以设置 args =roved 这会清除表中任何未批准的值。

local args = {
"99",
"lollypop",
"tornado",
"catid",
"CATID",
"filter_mediaType",
"one",
"10",
"beforeafter",
}

local function invert_table(target)
local t = {}
for k,v in pairs(target) do
t[v] = k
end
return t
end

local args_whitelist = invert_table(args_whitelist)


local approved = {}
for _,v in pairs(args) do
if args_whitelist[v] then
approved[#approved + 1] = v
end
end
args = approved

关于卢阿 |仅表参数的白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com