Perl 6:......和...之间的区别?

Ste*_*nus 5 perl6

Perl 6中......和...有什么区别?

例如,以下行将生成相同的输出:

for 1..5 { .say };

for 1...5 { .say };
Run Code Online (Sandbox Code Playgroud)

Chr*_*oph 10

.. 构造一个范围对象(想想数学区间).

... 构造一个序列(想想懒惰生成的一次性列表).

如果我想要做的就是迭代连续的整数(例如用于索引),我更喜欢他的前者(它是不太通用的工具,而且一个字符更短的引导).

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

  • 可能应该提到的一个重要区别是,当你迭代它们时,范围只会向上,即`for 10..0 {}`不会运行一次.如果你改用"10 ... 0",它会给你一个降序,正如你所料. (4认同)