Je me trouve écrire à plusieurs reprises et réécrire le type de code suivant: Avant de faire mon propre module pour le faire, je me demandais simplement s'il y a déjà quelque chose sur cpan comme ça? Je veux juste cette fonctionnalité ci-dessus très simple, vous suggérez donc d'utiliser Moose N'EST PAS une réponse appropriée à cette question. P> P>
3 Réponses :
Moose prend en charge les valeurs par défaut des attributs, par exemple:
sub new { my ( $package, %config ) = @_; my %defaults = ( x => 'a', y => 'b' ); my $self = { %defaults, %config }; # error checking here return bless $self, $package; }
Merci pour la pointe avec le hachage doublé. J'ai définitivement besoin de vérifier les choses errantes dans% config aussi.
Le truc de hachage doublé semble très agréable et semble travailler pour moi, mais à ma grande surprise, Perldata ne dis pas en réalité ce qui se passe lorsqu'un hash est attribué une liste contenant des clés en double. Avez-vous une documentation pour cela?
@Random, il y en a une brève mention dans perlfaq4 code>, voir "Comment puis-je obtenir les clés uniques de deux hachages?" chez perdoc.perl .org / ... ?
Merci. Perldata devrait dire comment cela est manipulé, si je peux comprendre qui maintient les documents, je leur donnerai un patch.
Si vous utilisez déjà Moose dans vos modules, vous pouvez obtenir ce comportement en combinant Moosex :: getopt et Moosex :: SimpleConfig . Votre fichier de configuration peut contenir les valeurs par défaut, puis vous remplacez quoi que ce soit selon vos besoins en faisant passer ces valeurs au constructeur:
paramètres :: Validate pourrait être de l'aide. Cela vous permettrait de supprimer le paramètre code> par défaut code> par défaut et spécifier pour chaque paramètre (éventuellement facultatif).
En outre, vous pouvez en faire un peu moins verbeux en utilisant sortie: p> mapper code>. Bien sûr, cela ignorera silencieusement les arguments non valides. P>
Ok j'accepte qu'il n'y a pas vraiment une réponse alors acceptez de mentionner des paramètres :: Validate, qui peut être la chose la plus proche de ce que j'ai demandé.