• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.0
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.3
软件大小:29.2M
更新时间:06-14

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

[教程心得] 【紫猫学院】一个命令实现查看变量数组等的详细信息内容——紫猫... [复制链接]

1#
调试分析脚本时,离不开输出查看变量值,但是有时候想要查看数组,查看数据类型等内容的话,需要写一大堆代码。那么今天我们来用一句话解决这些问题。

紫猫安卓插件下载地址:http://bbs.anjian.com/showtopic-655386-1.aspx
紫猫安卓插件教程目录:http://bbs.anjian.com/showtopic-659076-1.aspx

相关命令介绍:http://m.zimaoxy.com/post/zm.varinfo/

大家平时写脚本调试分析时,需要经常输出一些变量值查看,有时候想查看下数组的内容时,还要写一个遍历数组代码,例如平时我们的代码是这样的:
  1. //定义赋值二维数组
  2. Dim arr = Array(Array("我是","紫猫"),Array("QQ",345911220))

  3. //普通调试输出查看
  4. TracePrint "普通查看", arr(0,0),arr(0,1),arr(1,0),arr(1,1)
  5. //遍历调试输出查看
  6. For Each k , v In arr
  7.     For Each kk, vv in v
  8.         TracePrint "遍历查看:", vv
  9.     Next
  10. Next
复制代码


这还只是简单的二维数组,如果是三维数组,或者深层嵌套表等写起来更加复杂。
有时候分析为什么输出明明是成立的,但是判断却不成立的原因,也会让人头疼,例如
  1. Dim a=1,b=Split("1, 1", ",")
  2. TracePrint "a =",a, ",b(0) =", b(0),",b(1) =",b(1)
  3. If a = b(0) Then
  4.     TracePrint "a和b(0)相等"
  5. ElseIf b(0) = b(1) Then
  6.     TracePrint "b(0)和b(1)相等"
  7. Else
  8.     TracePrint "以上条件都不成立"
  9. End If
复制代码
请问如何解释输出结果为以上条件都不成立呢?

下面我教大家一个神奇的命令来解决上面这些麻烦事

例子1:
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次
  3. //定义赋值二维数组
  4. Dim arr = Array(Array("我是","紫猫"),Array("QQ",345911220))
  5. //可以直接输出数组或者表
  6. TracePrint zm.VarInfo(arr)
复制代码
上面代码最终输出的内容是【table 2】[["我是","紫猫"],["QQ",345911220]]
其中table表示arr是数组或者表,2表示第一维有两个成员,后面中括号为数组内容,大家也可以用表来运行看看结果,这里就不演示了。

例子2:
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次
  3. Dim a=1,b=Split("1, 1", ",")
  4. TracePrint zm.VarInfo(a, b(0), b(1))
  5. If a = b(0) Then
  6.     TracePrint "a和b(0)相等"
  7. ElseIf b(0) = b(1) Then
  8.     TracePrint "b(0)和b(1)相等"
  9. Else
  10.     TracePrint "以上条件都不成立"
  11. 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()命令,例如
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次
  3. Dim a=1,b=Split("1, 1", ",")
  4. zm.TracePrint("_4", a, b(0), b(1))
  5. If a = b(0) Then
  6.     TracePrint "a和b(0)相等"
  7. ElseIf b(0) = b(1) Then
  8.     TracePrint "b(0)和b(1)相等"
  9. Else
  10.     TracePrint "以上条件都不成立"
  11. End If
复制代码
上面代码就会输出显示 当前脚本第4行:<number 1> 1 <string 1> 1 <string 2> 1
由于插件的内置输出无法确定当前代码行号,所以需要参数"_4"来定位行号,如果省略不写,则调试信息不显示行号,若写其他行号,则无法准确定位,所以才说这个命令的参数有点麻烦,推荐使用zm.VarInfo()配合TracePrint来使用。

最后编辑紫猫 最后编辑于 2017-07-28 11:52:41
本主题由 版主 gljxsd 于 2017/12/13 17:28:56 执行 删除帖子 操作

【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


2#

前排露脸!

承接各类脚本开发

有偿解决按键基础问题(可远程讲解)

寻6级作者分摊单子,无需任何押金,开发全程不经我手!


QQ:517216542

《征途2S》和《千军》全部功能完全免费的脚本 ↓


正式版》》
经典版》》
3#

我是2楼,支持

4#

我去,为啥现在代码块这么丑!!!


【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


5#

学些学习~~~~~~~~~~~~~~~~~~~~~

6#

前排支持~~~~~~~

承接各类脚本 联系QQ: 9940 0460


PC,安卓,模拟器,脚本定制!
7#

话说代码高亮咋就没有了呢.....


【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


8#

老师的帖子,必须顶!

9#

,你看就看客户

10#

谢谢,学习

11#

前排露脸!

12#

看看~~~~~~~~~~~~~~

13#

谢谢老师我这学习一下

14#

努力学习

15#

谢谢紫猫大神的分享

16#

来学习下

17#

前来学习。。。、

18#

学习

代写各种脚本 : 电脑-安卓-IOS-模拟器 ; 游戏-办公-网页等

联系QQ82591558


19#

好厉害

20#

学习学习

发新话题 回复该主题