Tôi đang cố gắng tạo một chức năng sắp xếp có sẵn trong một trong các gói (hướng đối tượng) chấp nhận một khối và tạo sẵn $ a và $ b như tiêu chuẩn Perl sort
.Chức năng sắp xếp của perl trong một đối tượng
Thứ nhất, một phiên bản đơn giản của những gì tôi đang cố gắng để làm trong gói có chứa các chức năng bọc loại:
# 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
}
Và sau đó là một ví dụ về một khách hàng đi qua một khối trong đó xác định comparitor để chạy cho loại:
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 });
Có cách nào để làm những gì tôi đang cố gắng làm trong khi vẫn có thể sử dụng số sort
của Perl không?
Đánh giá cao bài đăng của bạn trên SO. –
'The * {...} cú pháp tham chiếu biến toàn cầu theo tên của nó.' Điều đó có vẻ giống như một cách hài hước để mô tả cú pháp đó - đặc biệt là sau khi giải thích cái * typeglob * là gì. Cú pháp đó là một cách khác để viết một * typeglob *, trong đó một * typeglob * đại diện cho tất cả các biến toàn cục với tên được chỉ định ..... – 7stud
Gán tất cả các biến 'a' toàn cầu của gói hiện tại, * typeglob * '* a', cho tất cả các biến 'a' toàn cầu của người gọi, * typeglob * '* {caller. ':: a'}' làm cho các biến 'a' toàn cục của gói hiện hành trở thành bí danh cho các biến 'a' toàn cầu của gói gọi .Điều đó có nghĩa là khi bạn thay đổi biến 'a' toàn cầu trong gói hiện tại, nó sẽ thay đổi biến 'a' toàn cầu trong gói của người gọi. * – 7stud