Clojure将函数与Let关联的最佳实践
我在另一个函数中定义一个函数。以下方法中的一种比另一种更好,还是更可取Clojure将函数与Let关联的最佳实践,clojure,Clojure,我在另一个函数中定义一个函数。以下方法中的一种比另一种更好,还是更可取 (let [hey (println "hey there")] hey) 或 第一个版本不会按照您可能希望的方式工作。在let期间对其求值一次,hey将绑定到值nil。i、 e.嘿的值不会是函数 第二个很好,而且容易阅读。其他办法: (let [hey0 #(println "hey0")] (hey0)) (letfn [(hey1 [] (println "hey1"))] (hey1)) 据我所知,它们的使用没
(let [hey (println "hey there")] hey)
或
第一个版本不会按照您可能希望的方式工作。在let期间对其求值一次,
hey
将绑定到值nil
。i、 e.嘿
的值不会是函数
第二个很好,而且容易阅读。其他办法:
(let [hey0 #(println "hey0")] (hey0))
(letfn [(hey1 [] (println "hey1"))] (hey1))
据我所知,它们的使用没有真正的规则。我只对非常短的函数使用#()
读卡器宏形式,如果我一起定义一组内部函数,则使用letfn
。我想你的意思是#(println…
,而不是第一段中的(println…
?
(let [hey0 #(println "hey0")] (hey0))
(letfn [(hey1 [] (println "hey1"))] (hey1))