是否有范围函数来创建数字列表?

时间:2017-10-12 07:28:16

标签: applescript

我希望在Applescript中创建一个连续的数字列表。可以使用repeat循环创建这样的列表,但这看起来很混乱。有什么可以这样的吗?

range from 1 to 10
-> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

2 个答案:

答案 0 :(得分:2)

是的,首先回答最后一个问题,(再用四行)列表重复循环:

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”-但仅适用于现有列表;例如:

将范围B设置为{1、2、3、4、5、6、7、8、9、10、11、12、13、14、15}
将nlist设置为rangeB的项目1至10
nlist
-> {1、2、3、4、5、6、7、8、9、10}

关于标题问题,如果它是您需要的功能,则在Applescript中它们称为处理程序,没有预设的范围函数,但是您可以像这样为您的任务创建自定义范围函数:

在范围(a,b)
将nlist设置为{}
从a-1到b-1重复n
将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中的功能在哪里?”答案是:现在,范围实际上是列表,或者列表中的项,函数是需要编写一次的处理程序,起初需要做一些额外的工作,但是好处是,这样做很容易-并且很有帮助-添加自定义功能,提供了全新的可能性(更正:列表)。相比之下,AppleScript重复循环就是电子表格中复制/粘贴操作的本质,相比而言:这是一个函数,我想将其应用于列表A,它使我获得具有结果的列表B,然后再次重复,从这里到那里。 (或者不停地。)是的,复制/粘贴乍一看似乎比较容易,并且我一开始就重复其“与i重复”看起来有点深奥,但是我认为,从更深的角度来看,它实际上非常简单。在这么多的编码情况下,它实际上是无法解决的。这是核心引擎! “吃饭,睡觉,狂欢,重复!” ; D并且重复循环可以再次升级:与电子表格的复制/粘贴方式相比,它提供了更多实用的可能性。

答案 1 :(得分:1)

No, there is not.

AppleScript is a very simple scripting language with a small core command set.

But it's extendible. Feel free to write a scripting addition or library providing this functionality.

PS: In AppleScript repeat loops are not messy at all ;-)