首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"for“关于Lua的桌子

"for“关于Lua的桌子
EN

Stack Overflow用户
提问于 2022-07-14 03:10:41
回答 2查看 73关注 0票数 0
代码语言:javascript
运行
复制
tablelogin = {0 = "test1",1 = "test2",2 = "test3",3 = "test4"}

for pp=0,#table do
  if takeinternalogin == (tablelogin[pp]) then
    LogPrint("Login found")
  else
    LogPrint("failed login not found")
  end
end

takeinternalogin是我程序的一个内部功能,它接受个人的登录。

在这个脚本中,我获取了这个人的登录,并比较了登录是否在表中。

它可以工作,但是在else之后,如果用户的登录没有在表中,它会返回消息“未能找到登录”4次,即返回检查表的次数。

我不明白。如何使消息只执行一次?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-14 05:34:17

当前,每次在表上迭代错误消息时,都会打印错误消息,而当前值不匹配。

代码语言:javascript
运行
复制
local arr = {[0] = "test1", [1] = "test2", [2] = "test3", [3] = "test4"}

function findLogin(input)
  for i,v in pairs(tablelogin) do
    if v == input then
      LogPrint("Login found")

      return i
    end
  end

  LogPrint("failed login not found")
end

login = findLogin(takeinternalogin)

使用返回循环中的使其脱离循环,在这种情况下永远不会到达它打印错误的行。

票数 0
EN

Stack Overflow用户

发布于 2022-07-14 05:33:12

首先,table是Lua的表库。您不应该将它用作变量名。除非您向该表中添加了数字字段或将其替换为其他内容,否则#table应该是0,因此您的循环不应该做任何事情。

但是,正如您所说的,您的循环运行了4次,我想您修改了table

您说internallogin是一个函数,所以您不能在比较函数值时输入if块,函数值不能等于字符串值:takeinternalogin == (tablelogin[pp]总是false!takeinternallogin必须返回一个字符串。

我不清楚为什么要在这里使用#table。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72974772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档