tutorial online framework example clojure

online - let vs letfn para definir funciones locales en clojure?



clojure web framework (2)

Si todo lo que necesito es una función local o 2 ... o 3 ... los dejaré. Si necesito dejar una combinación de funciones y no funciones, solo usaré un let normal. dejar y dejar sería una manera muy detallada de hacer esto.

Sin embargo, si necesita recursión mutua a través de sus funciones locales, tendrá que dejarlas de cualquier manera.

Versión corta: Úselos cuando crea que se ve mejor y cuando sea conveniente. No hay reglas duras y rápidas para usar cualquiera. Son solo herramientas en la caja de herramientas Clojure.

¡Que te diviertas!

¿Cuándo en la práctica debería usar letfn vs. let para definir funciones locales? ¿Qué ocurre con los casos en los que deseo tanto funciones locales como no funciones locales?


Normalmente, es más fácil y ordenado usar let : de esa manera puedes definir un conjunto de funciones y no funciones en una sola forma, e incluso volver a consultar las definiciones anteriores:

(let [f (fn [x] ....) value (reduce f some-collection) foo bar] .....)

letfn solo es realmente necesario cuando quiere definir múltiples funciones que se refieren recíprocamente entre sí. let no funcionará en este caso porque no admite referencias recursivas.