Рассмотрим двоичное дерево, разработанное в Moose :: Cookbook :: Basics :: Recipe3
Чтобы извлечь все узлы в предзаказе , я мог бы добавить следующую подпрограммув пакет BinaryTree
sub pre_order {
my ($self,$aref) = @_;
push @$aref, $self->node;
pre_order($self->left,$aref) if $self->has_left;
pre_order($self->right,$aref) if $self->has_right;
}
Подпрограмма должна использоваться следующим образом:
my $btree = BinaryTree->new;
#add some nodes
#then later...
my @nodes_in_preorder;
$btree->pre_order(\@nodes_in_preorder);
Как мне изменить подпрограмму, чтобы иметь возможность использовать синтаксис, подобный приведенному ниже:
my @nodes_in_preorder = $btree->pre_order();
для того, чтобы иметь возможность делать что-то вроде
for ($btree->pre_order()) { #bla bla }
позже.
Имеет ли это смысл, или я занимаюсь педантизмом?