如果匹配模式,则从Lua表中打印值。

好的,我最近开始学习 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”,要么“value”不是字符串,所以我尝试先将“value”转换

for key,value in pairs(pgn) do
 value = tostring(value)
  if ....
 #dostuff
 end
end

但它仍然抛出相同的错误

你们有什么想法,我应该如何让 string.match 接受“value”,或者在这个 for 循环中检查“value”中的模式是否有其他方法?

点赞
用户107090
用户107090

错误消息提到了变量 monitor,它未被定义,因此它的值是 nil。

尝试使用 string.match(value, "monitor")

2014-08-11 21:28:19