我在抓住功能和表格时遇到了可怕的时间。我之前问过一个类似于此的问题,但仍然遇到问题,让它正常工作。所以我会更具描述性。但就在我认为我理解它的时候,我又完全迷惑了自己。以下是我要完成的任务:
我有一个程序从外部来源收到input
。它需要采用input
,并基本上“剖析”字符串以获取所需信息。根据收到的信息,它将进入下一阶段或运行以执行适当的操作。例如:
收到的输入为NY345,de,M,9900
我创建了一个表,它具有特定输入可以开始的所有不同方式,例如:
local t = {["NY"] = 5, ["MS"] = 7, ["HG"] = 10, ["JX"] = 14, ["UY"] = 20}
现在我想使用一个函数来接收输入并在k
中查找t{}
并使用它来收集其他变量......
function seek(input)
for k, v in pairs (seek) do
local info = string.match(input,k)
if info then
return {seekData = string.match(input,k..",(%d*),.*"), seekMult = seekData*v}
end
end
end
我离我有多远?
如果我上面有“t = {...}
”表,那包含其他表格;如何命名“t = {...}
”中的每个表并为其他方程检索它?如果[“a”] = 8,该表的其余部分是否可以使用?例如:
t={["a"] = 2, ["b"] = 3, ["c"] = "IOS"},{["a"] = 8, ["b"] = 9, ["c"] = "NVY"},{["a"] = 1, ["b"] = 5, ["c"] = "CWQ"}}
if a = 8, then b = 9 and c = "NVY"
我希望我的函数能够搜索k(每个表)并将其与输入进行比较。如果找到了,那么它会将其他两个局部变量设置为b
和c
?
感谢您的帮助!
答案 0 :(得分:2)
我只回答问题1,因为2和3应该是单独的问题。有很多方法可以根据你没有提到的细节来做到这一点,但假设你有一个像这样的表:
t={
{["a"] = 2, ["b"] = 3, ["c"] = "IOS"},
{["a"] = 8, ["b"] = 9, ["c"] = "NVY"},
{["a"] = 1, ["b"] = 5, ["c"] = "CWQ"}
}
然后是一个函数,它使a
键值查找并返回b和c:
function findItem(a, yourTable)
for i,tt in ipairs(yourTable) do
if tt.a == a then
return i, tt.b, tt.c
end
end
end
有了这个,如果输入是k,那么
i, b, c = findItem(k, t)
if i == nil then
print('could not find k')
else
print('found k at index ' .. i)
end
findItem
当然可以返回找到的子表,也许你不需要索引:
function findItem(a, yourTable)
for i,tt in ipairs(yourTable) do
if tt.a == a then
return tt
end
end
end