好吧,我最近刚接触 lua,发现自己陷入了以下困境:
我有函数peripheral.getNames()(这是一个自定义函数)
它将返回一个具有结构 key,value 的表,而 key 始终是一个数字,从 1 开始,value 将是该函数找到的内容(它搜索与其连接的设备)
在我的示例中,它创建了一个如下所示的表
1 herp
2 derp
3 monitor_1
4 morederp
我可以使用以下内容打印值
local pgn = peripherals.getNames()
for key,value in pairs(pgn) do
setCursorPos(1,key)
write(value)
end
end
这将在我的显示器上输出键处表的相应值,如下所示
herp
derp
monitor_1
morederp
现在,我尝试过滤结果,以便仅在值包含“monitor”时才打印一些内容
我试图通过以下方式实现这一目标
for key,value in pairs(pgn) do
if string.match(value, monitor) then
#dostuff
end
end
但它总是返回“错误的参数:预期的字符串,为零”
显然 string.match 要么不接受“值”,要么值不是字符串
所以我先尝试转换值
for key,value in pairs(pgn) do
value = tostring(value)
if ....
#dostuff
end
end
但它仍然抛出同样的错误
你们中有人知道我如何让 string.match 接受“值”,或者是否有另一种方法可以在这个 for 循环中检查模式的“值”内容?