加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:50:18 所属栏目:大数据 来源:网络整理
导读:为什么我不能拖尾的结果呢?我可以在序列尾部返回(以及其他变化)上调用头部,但尾部的尾部不起作用(在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).heada $list.head(5).taile $list.tail(5).headf 这个失败了: $list.
为什么我不能拖尾的结果呢?我可以在序列尾部返回(以及其他变化)上调用头部,但尾部的尾部不起作用(在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,所以感谢找到这个蜂巢!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读