Est-il possible de passer des blocs aux méthodes Moose ? En Perl standard, je peux définir une fonction avec des prototypes comme ceci
sub fn (&) {
my $code =\&{shift @_};
$code->();
}
et ensuite passer un bloc à la fonction sans explicite sub
les références, c'est-à-dire fn { say "Hi there, world" }
.
Je pense que cela n'est possible que si le sous-programme est le premier paramètre, et comme celui-ci est toujours $self
avec une méthode Moose, cela ne semble pas possible ici, ce qui m'oblige à le faire de manière un peu plus explicite :
sub wrapper {
my ($self, $code) = @_;
$code->()
}
Wrapper->wrapper(sub { say "Hi there, world" });
Ce serait une façon assez pratique d'envelopper certains blocs, c'est-à-dire de fournir du texte supplémentaire ou d'exécuter du code de façon conditionnelle ou d'envelopper une évaluation autour d'un code où la gestion des erreurs reste la même (par exemple, évaluer un code et enregistrer les erreurs, enregistrer l'utilisateur, etc.)
Si je n'ai pas raté quelque chose, existe-t-il une solution de contournement ou une méthode alternative pour obtenir ce résultat sans trop de bruit de ligne ?