树方法 - 任何,Iterable

时间:2018-03-11 19:58:12

标签: tree iterable perl6

树方法在Perl6中做了什么?

来自Perl6 Documentation

  

如果类未定义或者它不可迭代,则返回该类,返回   将tree方法应用于元素的结果(如果是)   Iterable

但是,“iterable”文档中没有对tree方法的描述。

我试过了:

my $a = 1..4;
say $a.tree;

得到了:

$ perl6 test.pl6
(1 2 3 4)

与尝试相反:

my $a = 1..4;
say $a;

得到:

$ perl6 test.pl6
1..4

但是,我不确定区别是什么或意味着什么。

在类型列表下,在Perl6 docs网站上,似乎没有单独的“树”类型。

1 个答案:

答案 0 :(得分:4)

$ perl6 -e 'say (1, (^5), ((4,5),), 6).tree(*.self, *.reverse)'
(1 (4 3 2 1 0) ((4 5)) 6)

$ perl6 -e 'say (1, (^5), ((4,5),), 6).tree(*.self, *.reverse, *.sum)'
(1 (4 3 2 1 0) (9) 6)

请注意,只有第二个示例的第3级应用了.sum,两者的第二级如何反转,以及两者如何保持第一级保持不变。

如果您需要示例,可以随时查看https://github.com/perl6/roast

上的perl6烤架测试套件

https://github.com/perl6/roast/blob/ad9f949e2b479b5800c3e6315f979ded595a09fd/S02-lists/tree.t