好吧,所以我最近才接触到 lua,发现自己陷入了以下困境:
我有函数 peripheral.getNames()(这是一个自定义函数)
它将返回一个具有结构键、值的表,而键始终是一个数字并从 1 开始,值将是函数找到的值(它搜索与其连接的设备)
在我的示例中,它创建了一个如下所示的表格
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 要么不接受“值”,要么值不是字符串 所以我先尝试转换值(value)
for key,value in pairs(pgn) do
value = tostring(value)
if ....
#dostuff
end
end
还是报同样的错误
你们有没有人知道我如何让 string.match 接受“值”,或者是否有另一种方法在这个 for 循环中检查模式的“值”的内容?
最佳答案
错误消息是关于变量 monitor
,它没有定义,所以有一个 nil 值。
试试 string.match(value, "monitor")
。
关于regex - 如果模式匹配,则从 lua 表中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252653/