perl6 – 为什么我不能在Perl 6列表中“尾随”`tail`的结果?

前端之家收集整理的这篇文章主要介绍了perl6 – 为什么我不能在Perl 6列表中“尾随”`tail`的结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么我不能拖尾的结果呢?我可以在序列尾部返回(以及其他变化)上调用头部,但尾部的尾部不起作用(在2017.10中):
> my $list = <a b c d e f g h i j>;
(a b c d e f g h i j)
> $list.head(5).head
a
> $list.head(5).tail
e
> $list.tail(5).head
f

这个失败了:

> $list.tail(5).tail
Nil

但是在那里扔一个列表有效:

> $list.tail(5).list.tail
j

解决方法

这是一个错误.

List.iterator的.count-only优化方法没有考虑到迭代器在调用方法时已经被部分消耗(这里,通过第一个.tail调用)的事实,并且正如timotimo在注释中指出的那样,始终保持原始长度.绝对的.tail然后used that method,击中了虫子.

现已修复2017.11-76-gf70e20b Rakudo

除非我误解迭代器协议,在相当多的其他迭代器中同样的bug was present,所以感谢找到这个蜂巢!

猜你在找的Perl相关文章