Je comprends que la forme binding
permet une mise à l'échelle dynamique rebindable dans clojure. Jusqu'à présent, les seules utilisations que je l'ai vu utilisé est pour les E/S telles que print
où *out*
est rebond à tout ce que vous souhaitez écrivain à l'époque.Quels sont de bons exemples d'utilisation de 'binding' dans clojure?
Je voudrais voir des exemples qui tirent vraiment profit de la puissance de binding
où d'autres installations ne fonctionnent vraiment pas. Personnellement, je ne l'ai utilisé que dans les cas où passer un objet fourni par l'utilisateur à toutes les fonctions était vraiment fastidieux. Fondamentalement, une situation où j'essaie de créer un contexte que les fonctions d'aide utilise. (Similaire à ce cas When should one use the temporarily-rebind-a-special-var idiom in Clojure?) Pour être plus précis, je comptais sur l'utilisateur pour créer une liaison dynamique à la var *db*
pour permettre aux fonctions de base de données de savoir sur quoi opérer. Cela était particulièrement utile lorsque l'utilisateur devait écrire beaucoup d'appels imbriqués dans les fonctions de la base de données. En règle générale, je suis OK si j'ai besoin d'écrire des macros pour rendre les choses plus faciles pour moi, mais demander à l'utilisateur de le faire semble mauvais. Cela étant dit, j'essaie d'éviter de le faire autant que possible.
Quels sont les autres cas d'utilisation de 'binding' que je peux copier et incorporer dans mon code?
à tout le monde, toutes les bonnes réponses jusqu'à présent. Je le laisserai peut-être quelques jours de plus avant de choisir une réponse au cas où quelqu'un d'autre voudrait prendre un coup de couteau. – bmillare