Answers:
我想你担心迭代的速度。迭代将是order-n O(n)的时间。
在AppleScript中,您可以使用记录记录而不是记录列表,但我相信密钥的类必须是标识符 - 而不是像示例中那样的整数。
这是一个有类似问题的人的链接: 在AppleScript中模拟关联数组
Lauri Ranta的答案是使用名为“awk”的命令行工具。
我玩弄的解决方案是创建一个不露面的后台应用程序,这个应用程序将被称为“代理”,AppleScript可以调用它来使用其数据结构,例如关联数组(也称为字典或映射)。
我没有完成我的解决方案。这只是一个想法,但你可以使用Lauri的答案,她通常知道她在说什么。
由于我知道一点Pyton,并且由于Pyton附带OS X,预先安装在系统文件夹中,我会考虑自己使用Python。
我在“纯AppleScript”中再次尝试使用以下代码,我对此并不满意:
set theRecords to {fooKey:{key:"fooKey", value:"fooValue"}, barKey:{key:"barKey", value:"barValue"}}
try
set theRecord to get barKey of theRecords
display dialog (key of theRecord & ":" & value of theRecord)
on error errorMessage number errorNumber
if errorNumber is not equal to -128 then
display dialog "No match"
end if
end try
您可以混合使用shell脚本和AppleScripts:
-- in AppleScript, you can call a shell script
do shell script "<enter your shell script here>"
或者,您可以使用名为“osascript”的命令行工具从shell脚本调用AppleScript。
(every item in theRecords whose key is theKey)
或(first item in theRecords whose key is theKey)
。这将非常强大,类似于Python的列表推导。