Raku 如何使范围与..,但倒计时
我想要一个从5到1的循环。我知道我可以很容易地使用Raku 如何使范围与..,但倒计时,raku,Raku,我想要一个从5到1的循环。我知道我可以很容易地使用。操作员: for 1..5 { .print } 12345 但是当使用。操作符并反转侧面时,它似乎无法生成for可以使用的有效范围: for 5..1 { .print } Nil 我知道我可以在Range对象上使用reverse方法: for (1..5).reverse { .print } 54321 但是,我希望。操作符有一种特定的方式在一次调用中生成号码列表。我的问题是,如何使用。运算符创建倒计时范围?只需使用5…1(注意3…
。
操作员:
for 1..5 { .print }
12345
但是当使用。
操作符并反转侧面时,它似乎无法生成for
可以使用的有效范围:
for 5..1 { .print }
Nil
我知道我可以在Range对象上使用reverse
方法:
for (1..5).reverse { .print }
54321
但是,我希望
。
操作符有一种特定的方式在一次调用中生成号码列表。我的问题是,如何使用。
运算符创建倒计时范围?只需使用5…1
(注意3…
):
Range.reverse
的迭代器与forward的迭代器基本相同,只是从末尾到开头进行迭代。除了对.reverse
进行额外的初始调用外,执行过程中应该没有差异
除了1..5{}的实际上是静态优化的,根本不在内部使用范围。我想这是一个进一步静态优化的机会
编辑:确保(1..5)的。反向以与1..5的相同的方式进行优化。这使它快了大约6倍
编辑:截止到,对范围进行倒计时的最佳方法是对5…1进行:这使用了与(1…5)相同的优化。反转,但可读性更强。您还可以使用创建更一般的序列,包括5…1
。效率不如射程。我相信是反向的。看来我会像刚才那样优化它。^10。明天反向。这将使速度提高约75倍:-)
for 5...1 { .print }
54321