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

问题描述 投票:0回答:3

我想在 Applescript 中制作一个连续的数字列表。可以使用

repeat
循环创建这样的列表,但这看起来很混乱。有没有像这样工作的东西?

range from 1 to 10
-> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
applescript
3个回答
1
投票

是的,先回答最后一个问题,有(多用四行)一个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 中的函数在哪里?”答案是:范围现在是真正的列表,或者列表的项目,函数是处理程序,你只需要写一次,一开始需要做一些额外的工作,但好处是那么容易 - 并且很有帮助 - 它可以添加自定义功能,一个全新的范围(更正:列表)的可能性。 AppleScript 重复循环是复制/粘贴在电子表格中的内容,本质上是说,相比之下:这是一个函数,我想将它应用到列表 A,它让我得到带有结果的列表 B,然后再次重复它, 从这里到那里。 (或不停。)是的,一开始复制/粘贴似乎更容易,并且用它的“用我重复”一开始看起来有点深奥,我同意,但进一步考虑它实际上非常简单,并且有在这么多编码情况下真的没有办法解决它。是核心引擎! “吃饭,睡觉,狂欢,重复!” ;D 并且重复循环可以再次升级:提供比电子表格复制/粘贴方式更多的实用可能性。

1
投票

没有。

AppleScript 是一种非常简单的脚本语言,具有较小的核心命令集。

但它是可扩展的。随意编写提供此功能的脚本添加或库。

PS:在 AppleScript 中,重复循环一点也不混乱 ;-)


0
投票

没有重复循环的解决方案:

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") & "}"
© www.soinside.com 2019 - 2024. All rights reserved.