Sto cercando di rendere disponibile una funzione di ordinamento in uno dei miei pacchetti (orientati agli oggetti) che accetta un blocco e rende disponibili $ ae $ b come il Perl standard sort
.Includi la funzione di ordinamento di perl in un oggetto
In primo luogo, una versione semplificata di quello che sto cercando di fare nel pacchetto che contiene la funzione avvolto tipo:
# 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
}
E poi un esempio di un cliente che passa un blocco che definisce il comparitor a correre per l'ordinamento:
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 });
esiste un modo per fare quello che sto cercando di fare pur essendo in grado di utilizzare Perl sort
?
Apprezzo i tuoi post su SO. –
'La sintassi * {...} fa riferimento a una variabile globale con il suo nome. Sembra un modo divertente di descrivere quella sintassi, specialmente dopo aver spiegato che cos'è * typeglob *. Questa sintassi è un altro modo per scrivere un * typeglob *, dove un * typeglob * rappresenta tutte le variabili globali con il nome specificato ..... – 7stud
Assegnando tutte le variabili globali 'a' del pacchetto corrente, * typeglob * '* a', per tutte le variabili globali 'a' del chiamante, il * typeglob * '* {caller. ':: a'}' fa diventare le variabili globali 'a' del pacchetto corrente come alias per le variabili globali 'a' del pacchetto chiamante .Ciò significa che quando cambi una variabile globale 'a' nel pacchetto corrente, cambia la variabile globale 'a' nel pacchetto del chiamante. * – 7stud