"我需不需要死记硬背按键精灵里面的命令。"
关于这个问题,我的回答是不需要死记硬背,但是需要刻意记忆。听上去刻意记忆和死记硬背也差不多啊,其实是不一样的。
死记硬背是把命令一个个拿出来,像背单词一样的去记忆。
刻意记忆是当你用到某个命令时,有意识的记一下这个命令是怎么写的,在眼熟的基础上加深记忆。
我们在初学一个未知编程语言时,会有大量陌生的命令,想要学好这门语言是需要记忆这些命令,至少也要知道都有哪些命令。
一门完整的编程语言通常都是有命令库介绍的,方便用户查阅命令。以安卓按键为例,它的编程页面就是命令查找功能。
当我们不知道某个命令怎么书写的时候,就可以搜索查找了,使用起来还是很方便的。
既然有命令库搜索功能,为啥我还说需要刻意记忆呢?
这其实是学习的4个境界,熟能生巧、举一反三、无师自通、融会贯通。想要学好一门编程语言,记住常用的命令是非常必要的。
接下来,我说一下我学习安卓按键的经验:
(一)命令的通用用法
所谓通用也并不是所有,对于某些个例我们姑且忽略不计。
那么我们说一下通用用法:
命令名(参数1,参数2,……)
tap (100,200)
这是我举的一个例子,它是点击命令,可能会有人奇怪,平时写点击命令是都是这样的。
tap 100,200
两个例子不同之处是第二个没有括号,括号对于命令说并不是必须的,但是有括号我们可以第一眼知道,这个命令的参数有哪些,当然括号是可以省略的。
这里面还有一点,一个命令如果有多个参数,每个参数之间用逗号分隔,那么通过逗号的数量也可以知道有多少个参数,当一个命令的参数非常复杂的时候,我们区分参数的方法就是看逗号。
比如找图命令
FindPic 0, 0, 0, 0, "Attachment:1.webp","000000", 0, 0.9, intX, intY
数了一下有9个逗号,那说明啥?这个命令有10个参数呗。
我们掌握了通用格式,之后在用命令的时候,基本的写法是错不了。
(二)“框架型”的命令我们要死记硬背
什么命令是“框架型”?
if else endifdo loopfor nextwhile wendfunction end functionSelect Casesub end subgoto rem
这些命令都属于框架型的命令代码,它们都是逻辑层面的,并不执行具体的操作。
按键写成脚本主要是模拟手动操作,所以逻辑上并不难,必须要掌握这些框架型的命令。
(三)单一单词的命令,也要着重记忆
tap 点击keypress 按下swipe 滑动ocr 文字识别delay 延时import 导入插件、命令库traceprint 调试输出dim 定义变量inputtext 输入文字split 分割
(四)拼接命令,记住词根、词缀
这是我们记忆的重点,啥是词根词缀?
举个例子,找图命令是findpic,它其实是由两部分组成:find+pic,find是查找,pic是picture图片的缩写。找图就是把查找和图片两个词组合在一起。
按照这个思路,找色呢,查找和颜色组合在一起,那么推导出了findcolor这个命令。
当然不是所有命令都能这样推导,但是这里面find这个词就是一个词根词缀。它还用到其他命令中。
findstr 区域找字findnode 查找节点
和查找相关的命令,都可以向find靠拢,那么为什么会有这种规律呢?
是因为作者在编写命令的时候,都要赋予命令某种意义,让别人能够知道这个命令是做什么用的,所以名字越接近用途越好。如果随意给命令起名字,那么会给别人使用时带来困扰。
同样,我们自己做插件或者命令库的时候也是要遵循这个规律的,尽可能不要给命令起太过随意的名字。
除了find以外,还有哪些这类词根词缀呢?
get 获取set 设置str 字符串相关的to 两类东西之间的转换
当你遇到有这些词根词缀的时候,可以思考一下是不是和我说的这些有关联。通过这种方式的记忆,让我们记住命令容易些。
我个人是不喜欢死记硬背命令,但是当学习一门新的编程语言的时候,我会去看帮助文档,了解一下都有哪些命令,看命令介绍中的例子,去测试命令的参数和返回值以及运行效果。
除此之外,我会套用我原有的知识框架,比如我安卓按键学的比较好,有了基本的学习框架,那么我去学autojs的时候就会套用这个框架。
举个例子,按键里面的点击是tap,那么我就会想autojs应该也有点击命令,那么它的点击命令是啥,一查文档知道了是click。
这种就是套用框架的学习,使用这种方法能够加快学习新语言的入门速度。
最后还是说一点,所有学习都不是一蹴而就的,都需要刻意练习,别想着速成,大部分人都不是天才,都需要一步一个脚印的去学,我们要抱着终身学习的态度去学。