AppleScript绝对是个奇葩的存在!不管功能有多强大。
Handler有两种,一种是和OC类似的使用Label参数,一种是和javascript类似的使用括号把一堆参数都放在里面的。
label参数的Handler的写法非常奇怪,光看文档绝对让人迷糊。这里按照我的理解说一下。
on handleName of 第一个参数 [ASLabel 参数名...] [given label名:参数名[, label名:参数名...]]
这里解释一下。方括号括起来的是可以没有的。也就是只有一个参数的时候可以只在handlerName后面加一个of然后参数名就可以。这个简单,不多说。后面的比较麻烦。如果多余一个参数的时候,第二部分完全可以不要。只按照形式:given label名: 参数名的形式给出就可以。按照上面的形式可以推想到,使用given的形式可以给出很多的参数。比如:
on handlerName of firstone given another: anotherone, andone: anotherone1, andanotherone:anotherone2, andanotheragain:anotherone3
好的,回到handler定义形式的ASLabel部分。ASLabel是苹果系统定义的,而且在handler的定义中每一个ASLabel只能出现一次!郁闷就在于,苹果文档给出的这些关键词居然有无效的!看报错信息把,如果提示说“需要用到into什么的,而没有遇到”,那么恭喜你,你用的ASLabel不是系统定义的那个。
在调用label形式的handler的时候和定义的时候形式是一样的。这里主要针对的是后面的given定义形式。