- 按键认证导师
- 513852
- 3624
- 47
- 4633 朵
- 28052 个
- 6157 个
- 190000
- 2010-10-09
|
1#
t
T
发表于 2017-05-31 15:51
|
|只看楼主
调试分析脚本时,离不开输出查看变量值,但是有时候想要查看数组,查看数据类型等内容的话,需要写一大堆代码。那么今天我们来用一句话解决这些问题。 |
紫猫安卓插件下载地址:http://bbs.anjian.com/showtopic-655386-1.aspx 紫猫安卓插件教程目录:http://bbs.anjian.com/showtopic-659076-1.aspx
相关命令介绍:http://m.zimaoxy.com/post/zm.varinfo/
大家平时写脚本调试分析时,需要经常输出一些变量值查看,有时候想查看下数组的内容时,还要写一个遍历数组代码,例如平时我们的代码是这样的:
- //定义赋值二维数组
- Dim arr = Array(Array("我是","紫猫"),Array("QQ",345911220))
- //普通调试输出查看
- TracePrint "普通查看", arr(0,0),arr(0,1),arr(1,0),arr(1,1)
- //遍历调试输出查看
- For Each k , v In arr
- For Each kk, vv in v
- TracePrint "遍历查看:", vv
- Next
- Next
复制代码
这还只是简单的二维数组,如果是三维数组,或者深层嵌套表等写起来更加复杂。 有时候分析为什么输出明明是成立的,但是判断却不成立的原因,也会让人头疼,例如- Dim a=1,b=Split("1, 1", ",")
- TracePrint "a =",a, ",b(0) =", b(0),",b(1) =",b(1)
- If a = b(0) Then
- TracePrint "a和b(0)相等"
- ElseIf b(0) = b(1) Then
- TracePrint "b(0)和b(1)相等"
- Else
- TracePrint "以上条件都不成立"
- End If
复制代码 请问如何解释输出结果为以上条件都不成立呢?
下面我教大家一个神奇的命令来解决上面这些麻烦事
例子1:- Import "zm.luae" //导入插件,只需执行一次
- zm.Init //初始化插件,只需执行一次
- //定义赋值二维数组
- Dim arr = Array(Array("我是","紫猫"),Array("QQ",345911220))
- //可以直接输出数组或者表
- TracePrint zm.VarInfo(arr)
复制代码 上面代码最终输出的内容是【table 2】[["我是","紫猫"],["QQ",345911220]] 其中table表示arr是数组或者表,2表示第一维有两个成员,后面中括号为数组内容,大家也可以用表来运行看看结果,这里就不演示了。
例子2:- Import "zm.luae" //导入插件,只需执行一次
- zm.Init //初始化插件,只需执行一次
- Dim a=1,b=Split("1, 1", ",")
- TracePrint zm.VarInfo(a, b(0), b(1))
- If a = b(0) Then
- TracePrint "a和b(0)相等"
- ElseIf b(0) = b(1) Then
- TracePrint "b(0)和b(1)相等"
- Else
- TracePrint "以上条件都不成立"
- End If
复制代码 输出内容是【number 1】1,【string 1】1,【string 2】1 其中number和string分别表示数值类型与字符串类型,所以a和b(0)因为类型不同导致不相等。 另外string后面的1和2表示长度,b(0)的长度是1,b(1)的长度是2,所以b(0)和b(1)也不相等。
我们平时写代码很容易忽略数据类型和长度,所以加上这个命令后,就更加容易分析纠错了。如果你觉得这里代码量过大的话,还可以使用另一个命令来代替,只不过这个命令的参数比较麻烦。
相关命令:http://m.zimaoxy.com/post/zm.traceprint/ 这个命令与zm.VarInfo()的区别在于,zm.TracePrint()可以直接输出显示内容,无需调用TracePrint()命令,例如- Import "zm.luae" //导入插件,只需执行一次
- zm.Init //初始化插件,只需执行一次
- Dim a=1,b=Split("1, 1", ",")
- zm.TracePrint("_4", a, b(0), b(1))
- If a = b(0) Then
- TracePrint "a和b(0)相等"
- ElseIf b(0) = b(1) Then
- TracePrint "b(0)和b(1)相等"
- Else
- TracePrint "以上条件都不成立"
- End If
复制代码 上面代码就会输出显示 当前脚本第4行:<number 1> 1 <string 1> 1 <string 2> 1 由于插件的内置输出无法确定当前代码行号,所以需要参数"_4"来定位行号,如果省略不写,则调试信息不显示行号,若写其他行号,则无法准确定位,所以才说这个命令的参数有点麻烦,推荐使用zm.VarInfo()配合TracePrint来使用。
|