0
votes

Comment intercepter et prérégler les arguments avec des décorateurs?

J'ai une situation où j'écris de nombreuses fonctions de la forme xxx

Je veux permettre de faire ce prétraitement de l'ARG de manière plus facile. J'ai essayé d'utiliser des décorateurs comme dans l'exemple suivant xxx

à l'aide de cette technique, je reçois la sortie correcte xxx toutefois

C'est un peu hacky et je dois forcer les arguments de mot-clé. Y a-t-il une meilleure façon?


3 commentaires

Que voulez-vous dire que vous devez forcer les arguments de mots clés?


Vous n'avez besoin que d'arguments de mots clés si l'argument de la préprocession n'est pas fixé pour être le premier paramètre de position (ou second, etc.).


Bon point, je suppose qu'au lieu d'utiliser des arguments de mots clés, vous transmettez l'index (ES) des arguments ainsi que la fonction de pré-processeur au décorateur de la plupart extérieure et faites-la de cette façon.


3 Réponses :


0
votes

Y a-t-il une meilleure façon?

Non, je ne le crois pas.

temps de révision du code. Ok, après avoir examiné votre code, je lui donne le pouce. Lgtm. Expédier ça!

désolé. Je peux voir pourquoi tu penserais qu'il y a une sorte de cérémonie En cours dans ce code, mais ce que vous avez écrit est le moyen le plus naturel de l'exprimer. Bravo pour les annotations et pour utiliser Taper .


0 commentaires

0
votes

Le décorateur que vous avez écrit est beaucoup plus général que votre premier exemple. Vous pouvez simplement écrire xxx pré>

afin de décider si votre Super_decorator code> est bien conçu, vous devez définir plus précisément le problème qu'il tente de résoudre. P>


J'ai utilisé le nom composer code> car votre superdécorateur est juste la forme curry d'un opérateur de composition. Si vous connaissez n'importe quel haskell, vous écririez simplement P>

func = do_work . pre_processor


0 commentaires

1
votes

Un motif que j'ai vu est d'utiliser des références à des fonctions comme annotations sur les arguments que vous souhaitez que ces fonctions appliquées à xxx

ne jouent probablement pas bien avec la plupart des outils attendus utiliser des annotations pour l'allusion type.


1 commentaires

Je n'ai pas eu à utiliser la signature avant, c'est plutôt plongé