找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 173|回复: 1

[教程源码] [常见问题]调试输出显示unknown是什么意思?它是空值吗?

[复制链接]
  • 打卡等级:英雄豪杰

1087

主题

2132

回帖

4326

积分

院长

鲜花
8
猫粮
7085
QQ
发表于 2024-7-27 23:04:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
经常有学员问我为什么调试输出为空值,讲解了半天,最后发来截图一看,是unknown,不是空值...全白讲了...

这里是unknown并不是代表空值,而是TracePrint调试输出命令不知道应该怎么显示这个数据,才给你输出一个unknown,表示它不知道里面是什么内容。

那么问题来了,为什么TracePrint会不知道呢?一般这种情况常见于你直接输出数组或者表,而这个命令对数组或者表这种数据结构是不支持的。
[按键精灵] 纯文本查看 复制代码
Dim a = {1,2,3}
TracePrint a //这里就会输出显示unknown,你会觉得a的值是空值吗?


如果你想要输出一个数组,那么你应该是输出数组成员或者表成员,而非数组或表的自身,就像下面这样
[按键精灵] 纯文本查看 复制代码
Dim a = {1,2,3}
TracePrint a(0) '显示1
TracePrint a(1) '显示2
TracePrint a(2) '显示3


如果是一个你不知道结构的数组或者表, 那么你应该循环遍历输出查看
[按键精灵] 纯文本查看 复制代码
'数组的循环遍历
Dim a = {1,2,3}
For i = 0 to UBound(a)
    TracePrint a(i)
Next

'表的循环遍历
Dim b = {"a":1, "b":2, "c":3}
For Each k,v in b
    TracePrint k, v
Next


如果你的数据是表里还有表, 那么这个循环遍历会非常麻烦, 这里推荐使用紫猫插件的zm.VarInfo()命令.
[按键精灵] 纯文本查看 复制代码
Import "zm.luae"
zm.init

Dim a = {"a":{1,2,3}, "b":4}
TracePrint zm.VarInfo(a) //这里会把数据类型和值都一起显示出来


但是也有学员在这个zm.VarInfo上钻牛角尖了, 他不理解为什么定义的变量a是{"a":{1,2,3}, "b":4}, 而用zm.VarInfo()输出看到的是【table 0】{"a":{1,2,3}, "b":4}内容, 非要把前面的【table】删除掉...
这个问题你要理解命令的作用, zm.VarInfo是返回你传入参数的数据类型、长度、值, 通常配合TracePrint来查看这个变量的具体信息, 也就是说这里输出的table表示参数是table数据类型, 这里的0表示数组长度为0, 后面的{}表示具体内容格式. 而你要使用这个变量a, 还是正常的表里键值对调用, 比如TracePrint a["b"]之类的.
楼主热帖
  • 打卡等级:寻得绝学

3

主题

111

回帖

117

积分

按键电脑&手机班学员

QQ 262832680

鲜花
0
猫粮
3031
发表于 2024-7-28 15:30:33 | 显示全部楼层
紫猫老师牛逼 66666 66666 66666 66666
全职接单[POST,滑块,去广告,云配置,收徒]办公 各种全自动脚本 游戏不接QQ 262832680
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-9-17 03:18

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表