在对一个表格中的字符串进行反转操作时,收到了错误提示。

我目前正在使用等式将项目输入到表中。然后我想检查v中的项目是否与string.reverse相同,如果是,则将其打印出来。

table.insert(t,#t + 1,z)
for k,v in ipairs(t)do
    if string.reverse(v)== v then
      print(v)
    end
 end
end

不幸的是,我收到的所有回复都是关于if string.reverse(v)== v then print(v)end的错误。我已经更改了我的reverse语句的顺序,甚至将其更改为:

table.insert(t,#t + 1,z)
for k,v in ipairs(t)do
     printstring.reverse(v))
 end
end

以上代码将成功将我的表中的每个项目打印到屏幕上,这不是我想要的。我想在将该项目放入我的表中之前检查每个项目,如果为true,则将其放入我的t {}中。

检查表中的项目是否反转时拼写相同并将其打印到屏幕上的正确方法是什么?我不断收到以下错误:

bad argument #1 to 'reverse' (string expected, got nil)

点赞
用户869951
用户869951

你得到的错误信息 bad argument #1 to 'reverse' (string expected, got nil) 对我来说没有意义,因为它意味着 v 是空值,但是由于 v 是你的表中的元素,它不能是空值,其他的情况正在发生。但是,要“在将该项目放入我的表之前最好检查每个项目”,你可以这样做:

function insertIfSymmetric(word, tbl)
    if string.reverse(word) == word then
        tbl[#tbl+1] = word
    end
end

然后

> t={}
> insertIfSymmetric("hi", t)
> for k,v in ipairs(t) do print(k,v) end
> insertIfSymmetric("hih", t)
> for k,v in ipairs(t) do print(k,v) end
1       hih
2014-02-21 04:26:41