首页 > 其他 > 详细

lua中某个数据为userdata类型但打印为nil的问题

时间:2021-05-21 12:23:19      阅读:20      评论:0      收藏:0      [点我收藏+]

问题描述:

1、打印字段BonusStatus的类型,print( type(BonusStatus) ),其结果为userdata。

2、直接打印BonusStatus,print(BonusStatus),其结果为nil

3、将BonusStatus转成string打印,print(tostring(BonusStatus)),其结果为nil

引发这个问题的原因:

一般来说是数据通过协议转换后,得到了一个数据,这个数据是属于一个类中包含了null类。

例如正常数据:BonusInfo":{"BonusStatus":{ a = 1,b=2,c=3,d=4}},如果是这样,就应该是正常数据不会出现描述的异常。

但服务端传递过来的数据有可能是以下异常数据:

BonusInfo":{"BonusStatus":null}。

在服务端时,这个数据解析为BonusInfo类中包含一个名叫BonusStatus的类,但这个类为null。

此时在lua端的解析为类型为table的BonusInfo里面包含一个类型为userdata的BonusStatus,且这个BonusStatus的数据为nil。

原因是因为BonusInfo正常解析出来了,而BonusStatus则未正常解析。

但这个时候,你无法直接通过BonusStatus的类型或者数据去判断,因为你总不能无事有事将它转成string去判断吧,万一人家是正常的且有几百个上千个字段呢。

处理办法:

获取BonusStatus元表的类型,直接判断其是否为nil类型,若为nil,你再根据情况考虑是否将整个BonusStatus置为nil。

type(getmetatable(BonusStatus)) == "nil"

lua中某个数据为userdata类型但打印为nil的问题

原文:https://www.cnblogs.com/vsirWaiter/p/14792864.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!