2020新年第一坑——number变string

举报
爱上游戏开发 发表于 2022/07/02 22:38:59 2022/07/02
【摘要】 推荐阅读:  我的CSDN 我的博客园 QQ群:704621321 我的个人博客 今天是正月初三,早上新闻说因为新型冠状病毒的影响延迟...

推荐阅读:

今天是正月初三,早上新闻说因为新型冠状病毒的影响延迟上班,这不,下午游戏就出问题了,提前远程加个小班了。在大佬的指导下,终于发现了这个潜伏已久的问题。

问题如下:

有一个table,结构如下:
在这里插入图片描述
从输出来看,key值类型为number,如果要取key为1010的值,只需要遍历table,判断key==1010,代码如下:

for k,v in pairs(table)do
	if k==1010 then
		--TODO
	end
end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

期望结果是能取到1010对应得到值,但事实上是,找到对应的key。

原因:

当lua的key类型为number时会自动转换为string

排查过程:

table表内容,输出key对应的value。期望输出的key为1010,实际输出结果为“1010”。猜测:当lua的key类型为number时会自动转换为string。为了进一步确定,又输出了type(key),结果如下:
在这里插入图片描述
事实证明:猜测是正确的。

正确做法:

在lua中应时刻谨记:string和number比较出错,一定要记得转换

for k,v in pairs(table)do
	if tonumber(k)==1010 then
		--TODO
	end
end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

文章来源: unity3d.blog.csdn.net,作者:爱上游戏开发,版权归原作者所有,如需转载,请联系作者。

原文链接:unity3d.blog.csdn.net/article/details/104093744

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200