Perl 6:..和...之间有什么区别?

5

什么是Perl 6中...和...之间的区别?

例如,以下两行代码将产生相同的输出:

for 1..5 { .say };

for 1...5 { .say };

4
这个问题涉及到 Perl 5,它基本上是一种不同的语言。 - Stefanus
1个回答

10

.. 构造一个范围对象(类似于数学中的区间)。

... 构造一个序列(类似于懒惰生成的一次性列表)。

如果我只想迭代连续的整数(例如用于索引),我更喜欢前者(它是 less general 的工具,而且还少一个字符)。

如果你需要更精确的控制,使用后者(例如在 Perl6 中生成 Fibonacci 序列的成语化示例由表达式 1, 1, *+* ... * 给出,其中第三个项 *+* 是归纳地生成元素的规则)。


5
可能需要提及的一个重要区别是,当您迭代范围时,范围只会向上增加,即for 10..0 { }不会运行一次。如果您使用10...0,它将给您一个降序序列,正如您所期望的那样。 - timotimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接