为什么我不能拖尾的结果呢?我可以在序列尾部返回(以及其他变化)上调用头部,但尾部的尾部不起作用(在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,所以感谢找到这个蜂巢!