我想在 Applescript 中制作一个连续的数字列表。可以使用
repeat
循环创建这样的列表,但这看起来很混乱。有没有像这样工作的东西?
range from 1 to 10
-> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
是的,先回答最后一个问题,有(多用四行)一个list-of-lists重复循环:
set nlist to {}
repeat with n from 0 to 9
set nlist2 to {n + 1}
set nlist to nlist & nlist2
end repeat
nlist
--> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
基本上,如果你重复合并列表,你会创建一个列表列表, 而...
set nlist to {}
repeat with n from 0 to 9
set nlist to {n + 1}
end repeat
nlist
--> {10}
...只会导致循环的最后一个数字。 (当然,也必须有其他方法。)
最接近的一行等价范围可能是“第 1 到 10 项”——但仅适用于现有列表;例子:
将 rangeB 设置为 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
将 nlist 设置为 rangeB
的第 1 到 10 项
清单
-->{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
关于标题问题,如果它是您需要的功能,在 Applescript 中它们被称为处理程序,没有预设范围功能,但您可以为您的任务创建一个自定义范围功能,如下所示:
在范围(a,b)
将 nlist 设置为 {}
重复 n 从 a - 1 到 b - 1
将 nlist2 设置为 {n + 1}
将 nlist 设置为 nlist & nlist2
结束重复
结束范围
--
范围(5, 20)
-->{5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
没有。
AppleScript 是一种非常简单的脚本语言,具有较小的核心命令集。
但它是可扩展的。随意编写提供此功能的脚本添加或库。
PS:在 AppleScript 中,重复循环一点也不混乱 ;-)
没有重复循环的解决方案:
generateRange(1, 10) -- generate integers sequence from 1 to 10
on generateRange(fromInteger, toInteger)
"{" & (do shell script "jot -s ',' - " & fromInteger & space & toInteger) & "}"
run script result
end generateRange
同单行代码:
run script "{" & (do shell script "jot -s ',' - 1 10") & "}"