AppleScript编程(二):杂谈及补充

本文先谈作为AppleScript内置数据结构的记录(record)之用法,接着按照一般性套路介绍AS脚本的控制流概念,哦对还有最重要的文件概念


再谈record及相关

在上一章我们简单的介绍了AS内置的四种基本数据结构,分别是数字、文本、列表,再有就是下面要着重讲的记录(record)

record处理返回值很方便

脚本部分

AppleScript编程(二):杂谈及补充

输出部分

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

提供一个默认值以使用输入框

脚本部分

AppleScript编程(二):杂谈及补充

输出部分

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

写到这里,提两点我踩过的坑

1)可以为一个动作『赋值』,只要在前面加上set temp to即可

2)第二行依赖于前一个变量返回值的变量之变量名不能乱取

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

总结下有个规律:上面是『文本被填充』就是xxxEntered,文本的第一个栗子是『按钮被按下』就是xxxPressed,都是过去分词后置作定语:-)

不过如果不是依赖于别的动作的返回值,它的名字可以随便取(比如上面可以取shit如果你愿意的话)

3)最后说明下,text returned ofbutton returned of是一个完整的语句,不能拆成returned,没有这样的写法


苹果脚本的注释

使用--(两个连续的连字号)表示注释

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充


条件语句

AS的条件语句和Bash比较相似

AppleScript编程(二):杂谈及补充

如果输入2显示

AppleScript编程(二):杂谈及补充

否则

AppleScript编程(二):杂谈及补充

在按钮被点击后将beep相应的次数(如果输入1000就响1000次),而且中途还不能退出!

AppleScript编程(二):杂谈及补充

除非强制退出

AppleScript编程(二):杂谈及补充

强调一点,AS脚本的判断语句用=(单个等号)而不是两个等号进行判断,如果要赋值一律使用set关键字,不要混淆!


异常处理

小巧的AS脚本也有其支持的异常处理机制

AppleScript编程(二):杂谈及补充

在Bi一声后say出最后一行的话(脚本嘛,动态执行,所以处以0前面的语句还是执行了的)


路径、文件夹和应用程序

下面的一行AS脚本

AppleScript编程(二):杂谈及补充

运行后打开文件夹让用用户进行选择

比方我选的是~/Downloads

AppleScript编程(二):杂谈及补充

结果输出如下

AppleScript编程(二):杂谈及补充

它符合硬盘: 文件夹: 子文件夹: 子文件夹 ..的形式

记住上面的『描述文件路径的格式』,使用tell命令我们可以让Finder程序帮我们打开某个文件

AppleScript编程(二):杂谈及补充

同样的在tell语句块结束的地方不要忘了end tell
xxend xx格式在AS脚本中很常见)

AppleScript编程(二):杂谈及补充

运行脚本将会打开我的家目录下的音乐文件夹


重复

类似于其他高级程序设计元素的『循环』概念,这里做了简化

同样是以xxxend xxx格式的语句块组织代码的,这里关键字是repeat

实例一:输出(voice) Hello x 5

AppleScript编程(二):杂谈及补充

实例二:输出(voice) This is 1、This is 2、This is 3.

AppleScript编程(二):杂谈及补充

说明:注意到变量anItem依赖于lyst,所以它的命名是受限的


处理程序(handler)

说白了就是其他语言的函数、方法

AppleScript编程(二):杂谈及补充

AppleScript编程(二):杂谈及补充

不同的是,handler的格式是on xxxend xxx