马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
经常有学员问我为什么调试输出为空值,讲解了半天,最后发来截图一看,是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"]之类的.
|