Je comprends la différence conceptuelle entre et
:
Cependant, lequel est plus idiomatique clojure ? Faut-il faire beaucoup de différence une façon ou d’une autre ? D’après mes tests de performance (limité), il semble `` est un peu plus rapide.
Je comprends la différence conceptuelle entre et
:
Cependant, lequel est plus idiomatique clojure ? Faut-il faire beaucoup de différence une façon ou d’une autre ? D’après mes tests de performance (limité), il semble `` est un peu plus rapide.
reduce
et apply
ne sont évidemment qu'un équivalent (en termes de résultat final de restitution) pour associatif fonctions qui ont besoin de voir tous leurs arguments dans la variable-arité de cas. Quand ils sont le résultat sage équivalent, je dirais que c' apply
est toujours parfaitement idiomatique, tout en reduce
est équivalent à -- et peut raser une fraction d'un clin d'oeil, dans beaucoup de cas. Ce qui suit est mon raisonnement pour croire cela.
+
est lui-même mis en œuvre en termes de reduce
pour la variable arité de cas (plus de 2 arguments). En effet, elle me semble extrêmement sensible "par défaut" du chemin à parcourir pour toute variable-arité, fonction associative: reduce
a le potentiel pour effectuer certaines optimisations pour accélérer les choses, peut-être par quelque chose comme internal-reduce
, de 1,2 nouveauté récemment désactivé en master, mais j'espère être réintroduite dans les années à venir-dont il serait bête de se répliquer dans toutes les fonctions qui pourraient en bénéficier dans le vararg cas. Dans de tels cas, apply
sera juste ajouter un peu de surcharge. (Veuillez noter qu'il n'est rien à être vraiment inquiet.)
D'autre part, une fonction complexe peut prendre avantage de certaines d'optimisation des possibilités qui ne sont pas suffisamment général pour être construit en reduce
; ensuite, apply
vous permet de profiter de ceux, tout en reduce
pourraient effectivement ralentir votre système. Un bon exemple de ce dernier scénario se produisant dans la pratique est fourni par str
: il utilise un StringBuilder
en interne et en bénéficieront grandement de l'utilisation de apply
plutôt que d' reduce
.
Donc, je dirais utiliser apply
en cas de doute; et s'il vous arrive de savoir que ce n'est pas vous acheter quelque chose de plus reduce
(et que c'est pas susceptible de changer très bientôt), n'hésitez pas à utiliser reduce
à raser qui diminutif de surcharge inutile si vous en avez envie.
Opinions varient-In le monde Lisp, est certainement considéré comme plus idiomatique. Tout d’abord, il y a les problèmes de variadic déjà présentés. En outre, certains compilateurs Lisp commun réellement échoue lors
s’exerce contre les très longues listes en raison de la manière de gérer listes d’arguments.
Parmi les Clojurists dans mon cercle, bien que, à l’aide de `` dans ce cas semble plus fréquente. Je trouve plus facile de grok et préfère également.
Je me surprends normalement préférant réduire lorsqu’il agit sur tout type de collection - il se comporte bien et est une fonction très utile en général.
La raison principale que j’utiliserais s’appliquent si les paramètres des significations différentes dans différentes positions, ou si vous avez un couple de paramètres initiaux mais veulent obtenir le reste d’une collection, par exemple
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.