二、AppleScript的数据类型

  • 目录
  • 1.布尔类型 Boolean
  • 2.数字 Number
  • 3.字符串 String
  • 4.列表 List
  • 5.记录 Record

1.布尔类型 Boolean

True 和 False (不区分大小写)

set a to true
set b to false

2.数字 Number

set x to 25
set y to 4321.234

可以使用算数运算符

+ 加
- 减
* 乘
/ 除
^ 乘方
set x to 10.0
set y to x ^ 3

脚本编辑器会将结果显示在下半部分的结果区中。


43EF8341-1A12-4611-9247-9C24F960E7BA.png

数字基本上分为两类:整数(intergers)和分数(fractional numbers)。整数用来计数,比如循环次数。分数或者称作实数 (real numbers,简写作reals)用来计算例如棒球的击中率。整数和实数都可以是负数。


3.字符串 String

字符串必须放到双引号里


20BAA94B-CA67-46AF-BAA1-9F06E4E8C4C1.png

结果区中显示的字符串也是带有引号的。带有引号的就表示是字符串。

拼接字符串

可以通过 '&' 符号进行拼接

set x to "abc"
set y to "def"
set z to x & "连接" & y
DABB84A1-7FC8-4B3C-8E9D-3E2FC421FF70.png

查看字符串长度
length of / the length of

set theLength to the length of "I'm Rose."
4D3A5482-C665-4317-8C15-91D12FD6A2DD.png

length 为关键字,空格也会占用字符串的长度。

如果字符串中要包含双引号,则需要使用转义字符反斜杠 ''

set exampleString to "She said: \"Hi, I'm Rose.\""

强制类型转换

set a to "15" as number
5F4CA888-3EFE-4E81-B82E-07CEE045DCBE.png

结果中 15不带双引号,变成了数字

set a to 15 as string
7EE95B76-3FED-4E9E-8345-F23703AC53EE.png

结果中15变成了字符串。

set a to "1.99" as real
48848958-4D48-4B5A-B55F-86BB73500BFA.png
set a to "1.99" as integer
918EF52B-A476-4E8D-B14E-DAC7E7E89664.png

integer 为整数,精度丢失


4.列表 List

相当于OC中的数组。

set exampleList to {123.4, 567, "Rose", "Hello world"}
BA6B91D4-0EBF-4FDB-BE1B-2E26C7E27C2D.png

拼接数组

和string一样,通过 '&' 符号拼接

set a to {"a"}
set b to {"b"}
set c to {"c"}
set d to a & b & c
413ADF2A-ADBE-4C57-AE72-62E688CD3FB7.png

追加元素

set a to {"a"}
set c to a & "b"
FAB959A7-8B02-4039-A620-0E0188698FBD.png

取代元素

set listA to {"a", "b"}
set item 2 of listA to "c"
get listA
86434645-00C0-44ED-985B-F003FEFFE449.png

将第二个元素,变成了 "c"

set the second item of listA to "c"
set the 2nd item of listA to "c"

也是同样的作用。

取数组中的某个元素

set listA to {"a", "b"}
set secondItem to item 2 of listA
95CE6C5A-8F4D-470C-9DD5-54DF0F8CA501.png

取最后一个元素

set listA to {"a", "b"}
set lastItem to the last item of listA

或者

set listA to {"a", "b"}
set lastItem to item -1 of listA
D91DA630-C38E-494F-8C0E-85BCE55CBEEE.png

取列表中的一个范围的元素

set listA to {"a", "b", "c", "d", "e", "f", "g", "h"}
set rangeItems to items 2 through 5 of listA

取第二个到第五个元素,并不是5个长度的


EEAC7227-FF4E-4696-A884-21DAD81CCD30.png

注意:如果使用items 5 through 2 of listA,字面意思是从第五个到第二个,但实际上取的仍是从第二个到第五个,并不会反向的取出。

使用列表中的元素反向

set reversedList to reverse of {3, 2, 1}
5B9C990D-876F-4867-AA66-3D56326EA346.png

计算列表元素个数
可以通过以下指令得到

set listLength to the length of {"a","b","c"}
set listLength to the count of {"a","b","c"}

强制类型转换

set a to "a"
set b to a as list
E68D74DD-7C7D-4549-A5EC-A2AE283919FE.png

追加元素时,第一个是列表才能拼接

set a to {"a"}
set c to a & "b"

如果位置换过来,那么就会变成了拼接字符串

set a to {"a"}
set c to "b" & a
D1C4AFE5-E958-4165-ADA0-AD5E86513981.png

所以需要对"b"类型转换

set a to {"a"}
set c to ("b" as list) & a
60F2996F-C706-4548-9F75-F38D958184C7.png

追加元素还可以使用

set listA to {1, 2, 3, 4}
set the end of listA to 5
get listA
1D24A980-6217-4CAA-AC25-1C836B50CFD1.png

将字符串的每个字母组成列表

set itemized to every character of "I'm Rose."
C827F79B-F309-4904-8A33-185C9EFE61E0.png

通过某个字符分割字符串
通过AppleScript's text item delimiters来实现,将其设置为空格 " ",使用完之后还需要将其改回原来的值

set myString to "Hi there."
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to " "
set myList to every text item of myString
set AppleScript's text item delimiters to oldDelimiters
get myList
85B81A3E-36E4-459D-AAD4-9841FB1A1FAD.png

列表转为字符串

set listA to {"a", "b", "c", "d", "e", "f", "g", "h"}
set listA to listA as string
B0BE0F87-B0C3-4854-99C9-B94587340ED3.png

通过若干字符拼接字符串

set listA to {"a", "b", "c", "d", "e", "f", "g", "h"}
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "~~"
set myList to listA as string
set AppleScript's text item delimiters to oldDelimiters
get myList
BDF08AD2-7B58-41D4-BFCB-5F9855D70D58.png

5. 记录 record

相当于OC中的字典。

set friend to {age:10, nickName:"张三"}
445F9981-1CE1-4871-B902-64BE1575583D.png

记录中的单元叫做属性(property),不是元素(item)。不能通过item来取出数据。

查看记录中包含多少个属性

set friend to {age:10, nickName:"张三"}
set propertyCount to count of friend
F2A0E040-B15F-4A9C-8473-B0CE5653A3B8.png

取出记录中的某个key对应的值

set friend to {age:10, nickName:"张三"}
set temp to age of friend
1A47A77F-438C-4098-9535-400365214E7B.png

深浅拷贝
当我们将数据直接赋值给一个变量时,结果不会随age的改变而改变

set age to 30
set resultAge to age
set age to 50
get resultAge
63EDBBF6-79C2-491F-AB60-FDB50AB644B2.png

但当我们将数据传入记录或者列表时,结果如下

set recordA to {age:30}
set resultA to recordA
set age of recordA to 50
get resultA
D4BC30FE-4366-469E-8CA8-32834DC8C98E.png

age 会随之改变,为了保证数据被复制,可以使用copy指令

set recordA to {age:30}
copy recordA to resultA
set age of recordA to 50
get resultA
CD56B063-BF63-47B8-833D-58EE25045D6E.png
  • 注意:
  • AppleScript中的变量名由一个词组成,中间不能留有空格。不能以数字开头,但数字可以在变量名中出现。命名允许使用下划线“_”。
  • 赋值时使用set to 语句: set 变量名 to 变量值
  • AppleScript保留的标识符,不能被用户定义为自己的标识符。AppleScript官方文档关键字说明
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容