【发布时间】:2015-01-21 03:29:13
【问题描述】:
我正在尝试在我的一个(面向对象的)包中提供一个排序功能,该包接受一个块并像标准 Perl sort 一样提供 $a 和 $b。
首先,我在包含包装排序功能的包中尝试做的简化版本:
# In package My::Object
sub sort {
my $self = shift;
my $block = \&{shift @_};
return sort $block @{$self->{arrayRef}}; # I want to use the passed in block with array data contained in this object
}
然后是客户端传递一个块的示例,该块定义了要为排序运行的比较器:
my $obj = My::Object->new([3, 1, 5, 6, 2, 4]); # As an example, these values will be come arrayRef from above
my @sortedVals = $obj->sort({ $a < $b });
有没有办法在仍然能够使用 Perl 的 sort 的同时做我想做的事情?
【问题讨论】: